如何将单独的日期和时间列组合到DateTime中?

时间:2014-09-10 15:46:49

标签: sql sql-server sql-server-2012

我有一个客户数据库,其中包括LMD(上次修改日期)数据类型是日期,而LMT(上次修改时间)数据类型是int。我需要从这个LMD和LMT列创建一个日期时间。这是行,

LMD          LMT
2014-09-03  172351

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:1)

如果LMD是日期而LMT是int:

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