I have 6 digit value in one column that I need to convert to date-time. I tried two different formula given below.

我在一列中有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. (DATEADD(day, CONVERT(int, COLUMNNAME))-(1000*(转换(int, COLUMNNAME)/100)) -1, DATEADD(year, CONVERT(int, COLUMNNAME/1000), '1 Jan 1900'))作为Order_date。

But this is giving following error message:-

但这是给以下错误信息:-

Adding a value to a 'datetime' column caused an overflow. [SQLSTATE=22007, SQLERRORCODE=517]

向“datetime”列添加值会导致溢出。(SQLSTATE = 22007,SQLERRORCODE = 517)

  1. convert(datetime, (convert (int, COLUMNNAME)), 6) as Order_date
  2. 将(datetime, (convert (int, COLUMNNAME))) 6)转换为Order_date

And this is giving incorrect value for date. There is one particular value 118150 that should result into 2018-05-30 :00:00:00, but my statement is returning 2223-06-27 00:00:00

这就给出了不正确的日期。有一个特殊的值118150应该是2018-05-30:00:00:00:00,但是我的语句返回2223-06-27 00:00

Can anybody please help what is causing error with first statement and how can I modify it to run on entire table.

谁能帮助我在第一个语句中产生错误,以及如何修改它以在整个表上运行。

1 个解决方案

#1


4

If I understand the date format correctly, this will work:

如果我理解正确的日期格式,这将起作用:

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

更多相关文章

  1. sql语句,order by后加参数问题
  2. 新手求助一条sql语句~~帮忙看看
  3. 将下面语句插入到SQLSERVER数据库中出现“将字符串转换为 unique
  4. 将Excel表格多个Sheet表的数据转换为SQL存储语句
  5. 比比谁的单条SQL语句最长。先看我的:
  6. 老鸟帮帮忙:能用字数最少的SQL语句来实现以下查询功能吗?分虽少但
  7. 用sql语句如何实现小数位数四舍六入,小数位数是五的不变?
  8. sqlserver各种注释语句的写法
  9. 一种在t-SQL中选择两个日期之间的日期的方法

随机推荐

  1. Android 音频播放
  2. Android -很全的android操作内容丰富
  3. Android 一个APK文件部署产生多个应用安
  4. 优酷菜单
  5. 半透明Activity方法
  6. android 设置activity不全屏
  7. TextView的走马灯效果
  8. 国产android新机开用5件事
  9. Android 判断SD卡是否存在及容量查询
  10. 自定义Android 标题栏TitleBar布局