[英]Varchar to Datetime conversion - SQL Server
如何將varchar列轉換為datetime字段。 varchar字段具有以下格式的日期和時間
t_time
-------
20140314163955
以下不起作用
CAST(t_time AS datetime)
提前致謝。
為了保持整潔,一種選擇是使用一種功能,例如下面的一種:
CREATE FUNCTION CONVERT_DATETIME_STRING_TO_DATE (@StringDate NVARCHAR(14))
RETURNS DATETIME
AS
BEGIN
DECLARE @RESULT DATETIME
SELECT @RESULT = CONVERT(datetime, substring(@StringDate, 0, 9))
SELECT @RESULT = DATEADD(HOUR, CAST(SUBSTRING(@StringDate, 9, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(MINUTE, CAST(SUBSTRING(@StringDate, 11, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(SECOND, CAST(SUBSTRING(@StringDate, 13, 2) AS INT), @RESULT)
RETURN (@RESULT)
END
轉換可以在一個SELECT
語句中完成,但是我認為最好將每個小時,幾分鍾,幾秒鍾的步驟分開,這樣可以使代碼更清晰並且易於維護。
然后,只需從表中調用該函數,例如:
SELECT CONVERT_DATETIME_STRING_TO_DATE(t_time)
FROM myTable
更新:
如果您僅具有執行SELECT
語句的權限,請使用以下命令:
SELECT DATEADD(SECOND, CAST(SUBSTRING(t_time, 13, 2) AS INT), DATEADD(MINUTE, CAST(SUBSTRING(t_time, 11, 2) AS INT), DATEADD(HOUR, CAST(SUBSTRING(t_time, 9, 2) AS INT), CONVERT(DATETIME, substring(t_time, 0, 9)))))
FROM TABLE
嘗試這個 。
DECLARE @s AS VARCHAR(14)
DECLARE @dt AS DATETIME
SET @s = '20140314163955'
SET @dt = CAST(SUBSTRING(@s, 1,8) as datetime)
SELECT DATEADD(Second,
CAST(Substring(@s, 13,2) AS INT) ,
DATEADD(minute,
CAST(Substring(@s, 11,2) AS INT) ,
DATEADD(hour,
CAST(Substring(@s, 9,2) AS INT),
@dt))) AS [DateTime]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.