我有一个客户数据库,其中包括LMD(上次修改日期)数据类型是日期,而LMT(上次修改时间)数据类型是int。我需要从这个LMD和LMT列创建一个日期时间。这是行,
LMD LMT
2014-09-03 172351
答案 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
)