我需要在SQL查询中将数字转换为DateTime数据类型,
这是我的输入,
18300031121994
格式为%H%M%S%d% M% Y,
预期输出,
1994-12-31 18:30:00.000
如何使用SQL查询将数值转换为日期时间…请帮帮我
这个应该可以帮你完成这项工作:
declare @dt bigint = 18300031121994
, @dtStr nchar(14)
set @dtStr = right('000000' + cast(@dt as nvarchar(14)),14) -- leading zeros would not appear in an int, so we have to lpad with 0s to avoid midnight issues
select @dtStr
,cast( right(@dtStr, 4) + '-' + substring(@dtStr, 9, 2) + '-' + substring(@dtStr, 7, 2) + ' ' + left(@dtStr, 2) + ':' + substring(@dtStr, 3, 2) + ':' + substring(@dtStr, 5, 2) as datetime)
首先将数字数据类型转换为字符串,这样就可以进行字符串操作了。
然后我们给pad留下0,以解释任何可能被"截断"的内容。通过前导零不是原始整数值的一部分
然后,我们根据给定的模式HHmmssddMMyyyy
将字符串切割成其组成块,并使用适当的分隔符将它们重新组合在一起。
然后将这个yyyy-MM-dd HH:mm:ss
格式的字符串强制转换回日期时间。
Per Larnu上面的评论;如果您不需要这样做/首先要弄清楚为什么要处理这样的日期是更好的(尽管可能您正在从遗留系统迁移数据/类似的东西,这是一个不可避免的步骤)。