sqlserverdate时间转换给出不正确的结果?
I have 6 digit value in one column that I need to convert to date-time. I tried two different formula given below.
我在一列中有6位值,我需要将其转换为日期-时间。我尝试了下面给出的两个不同的公式。
(DATEADD(day, CONVERT(int, COLUMNNAME)-((1000*(CONVERT(int, COLUMNNAME)/100)))-1, DATEADD(year, CONVERT(int, COLUMNNAME/1000), '1 Jan 1900'))) as Order_date
- (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)
convert(datetime, (convert (int, COLUMNNAME)), 6) as Order_date
- 将(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)
更多相关文章
- sql语句,order by后加参数问题
- 新手求助一条sql语句~~帮忙看看
- 将下面语句插入到SQLSERVER数据库中出现“将字符串转换为 unique
- 将Excel表格多个Sheet表的数据转换为SQL存储语句
- 比比谁的单条SQL语句最长。先看我的:
- 老鸟帮帮忙:能用字数最少的SQL语句来实现以下查询功能吗?分虽少但
- 用sql语句如何实现小数位数四舍六入,小数位数是五的不变?
- sqlserver各种注释语句的写法
- 一种在t-SQL中选择两个日期之间的日期的方法