SQL Server日期时间转换给出错误的结果?

时间:2018-06-07 12:24:03

标签: sql sql-server

我在一列中有6位数值,我需要转换为日期时间。我尝试了两种不同的公式。

  1. (DATEADD(day, CONVERT(int, COLUMNNAME)-((1000*(CONVERT(int, COLUMNNAME)/100)))-1, DATEADD(year, CONVERT(int, COLUMNNAME/1000), '1 Jan 1900'))) as Order_date
  2. 但是这会给出以下错误消息: -

      

    将值添加到' datetime'列导致溢出。 [SQLSTATE = 22007,SQLERRORCODE = 517]

    1. convert(datetime, (convert (int, COLUMNNAME)), 6) as Order_date
    2. 这给了日期不正确的价值。应该导致2018-05-30 :00:00:00的一个特定值118150,但我的陈述正在返回2223-06-27 00:00:00

      任何人都可以帮助解决第一个语句导致错误的问题,如何修改它以在整个表上运行。

1 个答案:

答案 0 :(得分:4)

如果我理解正确的日期格式,这将有效:

select dateadd(day, x % 1000 - 1, datefromparts(1900 + x / 1000, 1, 1))
from (values (118150)) v(x)