我有一个客户数据库,其中包括LMD(上次修改日期)数据类型是日期和LMT(上次修改时间)数据类型是int。我需要从这个LMD和LMT列创建一个日期时间。这里是行,如何将单独的日期和时间列组合到DateTime中?
LMD LMT
2014-09-03 172351
我有一个客户数据库,其中包括LMD(上次修改日期)数据类型是日期和LMT(上次修改时间)数据类型是int。我需要从这个LMD和LMT列创建一个日期时间。这里是行,如何将单独的日期和时间列组合到DateTime中?
LMD LMT
2014-09-03 172351
您可以使用记名表决和模抽取所需零件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
感谢它很好 – user960567 2014-09-10 16:18:11
这工作使用TIMEFROMPARTS
并将其添加到日期。
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位数,它将无法工作? – user960567 2014-09-10 16:17:38
如果LMD是日期和LMT是一个int:
SELECT
DATETIMEFROMPARTS(
YEAR(LMD),
MONTH(LMD),
DAY(LMD),
(LMT/10000) % 100,
(LMT/100) % 100,
LMT % 100, 0
)
获取'参数1的子字符串函数的参数数据类型int无效.' – user960567 2014-09-10 16:14:53
哦,我以为是一个字符,我的坏,将更新我的答案。 – jpw 2014-09-10 16:15:20
那是17:23:51吗? HH:MM:SS? – SQLChao 2014-09-10 15:56:38
不知道,但我认为呢? – user960567 2014-09-10 15:59:00