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