我在一列中有6位数值,我需要转换为日期时间。我尝试了两种不同的公式。
(DATEADD(day, CONVERT(int, COLUMNNAME)-((1000*(CONVERT(int, COLUMNNAME)/100)))-1, DATEADD(year, CONVERT(int, COLUMNNAME/1000), '1 Jan 1900'))) as Order_date
但是这会给出以下错误消息: -
将值添加到' datetime'列导致溢出。 [SQLSTATE = 22007,SQLERRORCODE = 517]
convert(datetime, (convert (int, COLUMNNAME)), 6) as Order_date
这给了日期不正确的价值。应该导致2018-05-30 :00:00:00
的一个特定值118150,但我的陈述正在返回2223-06-27 00:00:00
任何人都可以帮助解决第一个语句导致错误的问题,如何修改它以在整个表上运行。
答案 0 :(得分:4)
如果我理解正确的日期格式,这将有效:
select dateadd(day, x % 1000 - 1, datefromparts(1900 + x / 1000, 1, 1))
from (values (118150)) v(x)