0
我需要將Long值轉換爲日期時間格式。 。在SQL Server 2008中轉換日期時間格式
如長值 - 20080506015600658 日期時間格式 - 週二05月06日1時56分○○秒IST 2008
我需要將Long值轉換爲日期時間格式。 。在SQL Server 2008中轉換日期時間格式
如長值 - 20080506015600658 日期時間格式 - 週二05月06日1時56分○○秒IST 2008
這裏是醜陋的方式通過字符串操作做到這一點:
declare @start bigint
set @start = 20080506015600658
select CONVERT(datetime,
STUFF(STUFF(STUFF(STUFF(STUFF(STUFF(
t,15,0,'.'),
13,0,':'),
11,0,':'),
9,0,'T'),
7,0,'-'),
5,0,'-'))
from (select CONVERT(varchar(20),@start) as t) n
這基本上力量它在轉換之前符合YYYY-MM-DD'T'hh:mm:ss.mil
的模式。
而這裏的醜無比的方式與數學做到這一點:
declare @start bigint
set @start = 20080506015600658
select
DATEADD(year, (@start/10000000000000) - 1, --Because we already have 1 on starting date
DATEADD(month, (@start/100000000000)%100 - 1, --Because we already have 1 on starting date
DATEADD(day, (@start/1000000000)%100 - 1, --Because we already have 1 on starting date
DATEADD(hour, (@start/10000000)%100,
DATEADD(minute,(@start/100000)%100,
DATEADD(second,(@start/1000)%100,
DATEADD(millisecond,@start%1000,CONVERT(datetime2,'0001-01-01'))))))))
我認爲這會幫助我..謝謝.. – Vasanthan
有簡單的轉換沒有內置從一個到另一個。有一些醜陋的字符串操作黑客或數學樂趣很多。這個值來自哪裏,並且在它到達SQL Server之前不可能被更改? –