使用SQL-server 2008數據庫我有一個char(14)
數據類型,我想將其轉換爲日期時間。sql-server:將Char(14)轉換爲Datetime?
例炭(14)的值:
20120209102026
20010131120000
日期格式爲某種yyyymmdd
。
似乎我發佈的值不是唯一的格式,因爲我得到一些「值超出範圍」的錯誤。爲此,我可以跳過那些不是有效日期的那些。
使用SQL-server 2008數據庫我有一個char(14)
數據類型,我想將其轉換爲日期時間。sql-server:將Char(14)轉換爲Datetime?
例炭(14)的值:
20120209102026
20010131120000
日期格式爲某種yyyymmdd
。
似乎我發佈的值不是唯一的格式,因爲我得到一些「值超出範圍」的錯誤。爲此,我可以跳過那些不是有效日期的那些。
declare @c char(14)
select @c='20120209102026'
Select Cast(Substring(@c,1,8) + ' ' + Substring(@c,9,2)+':'+
Substring(@c,11,2)+':'+ Substring(@c,13,2) as DateTime)
版本二,忽略了數值範圍:
Select Cast(
Rtrim(Substring(@c,1,8)
+ Case When len(Substring(@c,9,4))>=4 then +' '+ Substring(@c,9,2) else '' end
+ Case When len(Substring(@c,11,2))=2 then +':'+ Substring(@c,11,2) else '' end
+ Case When len(Substring(@c,13,2))=2 then +':'+ Substring(@c,13,2) else '' end)
as Datetime)
這是醜陋的,但如果你的格式爲yyyymmddhhmmss
那麼你可以使用:
select cast(left(yourDate, 8)+' '+
SUBSTRING(yourDate, 9, 2)+':'+SUBSTRING(yourDate, 11, 2)+':'+RIGHT(yourDate, 2) as datetime)
from yourtable
一系列函數調用,但結果相同。
嘗試這樣的:
select convert(datetime,STUFF(STUFF(STUFF(STUFF(STUFF('20010131120000',5,0,'/'),8,0,'/'),11,0,' '),14,0,':'),17,0,':'))
在這裏尋找如何STUFF的作品!
其實它看起來像'yyyyMMddhhmmss'。你使用的是什麼版本的SQL Server?你可以使用SQL CLR嗎? – Oded
我正在使用sql 2008.我認爲數據庫最初是在某種兼容模式下的sql server 2000。 – chobo2
這是非常相似的http://stackoverflow.com/questions/6601663/how-do-i-create-a-datetime-from-a-custom-format-string –