2014-09-10 55 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

相关问题