簡體   English   中英

Varchar到Datetime的轉換-SQL Server

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM