2014-09-10 33 views
0

我有一個客戶數據庫,其中包括LMD(上次修改日期)數據類型是日期和LMT(上次修改時間)數據類型是int。我需要從這個LMD和LMT列創建一個日期時間。這裏是行,如何將單獨的日期和時間列組合到DateTime中?

LMD   LMT 
2014-09-03 172351 
+0

那是17:23:51嗎? HH:MM:SS? – SQLChao 2014-09-10 15:56:38

+0

不知道,但我認爲呢? – user960567 2014-09-10 15:59:00

回答

1

您可以使用記名錶決和模抽取所需零件DATEADD

declare @datefield date 
declare @timefield int 

set @datefield='20140910' 
set @timefield=121314 

Select CAST(@datefield AS DATETIME) + DATEADD(HOUR,@timefield/10000,0) + DATEADD(MINUTE,@timefield/100 % 100,0)+ DATEADD(SECOND,@timefield % 100,0) 


Select CAST(LMD AS datetime) + DATEADD(HOUR,LMT/10000,0) + DATEADD(MINUTE,LMT/100 % 100,0)+ DATEADD(SECOND,LMT % 100,0), LMT, LMD 
FROM MyTable 
+1

感謝它很好 – user960567 2014-09-10 16:18:11

1

這工作使用TIMEFROMPARTS並將其添加到日期。

SQL Fiddle Demo

select cast(LMD as datetime) + cast(timefromparts(substring(cast(lmt as varchar), 1, 2), substring(cast(lmt as varchar), 3, 2), substring(cast(lmt as varchar), 5, 2),0,0) as datetime) 
from yourTable 
+0

如果小時是1位數,它將無法工作? – user960567 2014-09-10 16:17:38

1

如果LMD是日期和LMT是一個int:

SELECT 
    DATETIMEFROMPARTS(
     YEAR(LMD), 
     MONTH(LMD), 
     DAY(LMD), 
     (LMT/10000) % 100, 
     (LMT/100) % 100, 
     LMT % 100, 0 
    ) 
+0

獲取'參數1的子字符串函數的參數數據類型int無效.' – user960567 2014-09-10 16:14:53

+0

哦,我以爲是一個字符,我的壞,將更新我的答案。 – jpw 2014-09-10 16:15:20

相關問題