2013-07-10 105 views
0

我需要將Long值轉換爲日期時間格式。 。在SQL Server 2008中轉換日期時間格式

如長值 - 20080506015600658 日期時間格式 - 週二05月06日1時56分○○秒IST 2008

+0

有簡單的轉換沒有內置從一個到另一個。有一些醜陋的字符串操作黑客或數學樂趣很多。這個值來自哪裏,並且在它到達SQL Server之前不可能被更改? –

回答

1

這裏是醜陋的方式通過字符串操作做到這一點:

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')))))))) 
+0

我認爲這會幫助我..謝謝.. – Vasanthan

相關問題