簡體   English   中英

T-SQL將字符串轉換為日期

[英]T-SQL convert string to date

我有一個長字符串(列類型為nvarchar),其中包含一個日期。 我正在提取此日期並將字符串復制到新表中。 該字符串具有以下格式:

Mon, 3 Dec 2012 11:53:07 +0000

我想將此轉換為日期:

select convert(datetime,'Mon, 3 Dec 2012 11:53:07 +0000',101) from table

但我得到這個錯誤:

Conversion failed when converting datetime from character string.

考慮到非標准的日期/時間字符串格式,這有點蠻力,但是它可以工作,只要您不需要捕獲時區數據...

DECLARE @datestring VARCHAR(50) = 'Mon, 3 Dec 2012 11:53:07 +0000'

SELECT
    CAST(RTRIM(SUBSTRING(@datestring,6,20)) AS DATETIME)

要完整地處理該字符串,解決方案並不簡單,因為沒有一種標准格式可以匹配。 取而代之的是,您需要刪除一些內容並進行操作以匹配標准格式,然后根據需要進行操作:

declare @d nvarchar(128) = 'Mon, 3 Dec 2012 11:53:07 +0000'
, @dt datetime
, @hh int
, @mm int
select @dt = SUBSTRING(@d,PATINDEX('%[0-9]%',@d),charindex('+',@d)-1-PATINDEX('%[0-9]%',@d))
, @hh = cast(SUBSTRING(@d, LEN(@d)-5,1) + SUBSTRING(@d, LEN(@d)-4,2) as int) 
, @mm = cast(SUBSTRING(@d, LEN(@d)-5,1) + SUBSTRING(@d, LEN(@d)-2,2) as int)
select dateadd(minute,@mm,dateadd(hour,@hh,convert(datetime,@dt,113)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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