将 INT 转换为 DATETIME (SQL)
我正在尝试将日期转换为日期时间,但出现错误。我要转换的数据类型是 (float,null),我想将其转换为 DATETIME。
该代码的第一行工作正常,但我在第二行收到此错误:
将表达式转换为数据类型日期时间时出现算术溢出错误。
CAST(CAST( rnwl_efctv_dt AS INT) AS char(8)),
CAST(CAST( rnwl_efctv_dt AS INT) AS DATETIME),
I am trying to convert a date to datetime but am getting errors. The datatype I'm converting from is (float,null) and I'd like to convert it to DATETIME.
The first line of this code works fine, but I get this error on the second line:
Arithmetic overflow error converting expression to data type datetime.
CAST(CAST( rnwl_efctv_dt AS INT) AS char(8)),
CAST(CAST( rnwl_efctv_dt AS INT) AS DATETIME),
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您需要首先转换为 char 因为转换为 int 会将这些天添加到 1900-01-01
以下是一些示例
1900-01-06 00:00:00.000
会爆炸,因为您无法将 20100101 天添加到 1900-01- 01..你超出限制
首先转换为字符
you need to convert to char first because converting to int adds those days to 1900-01-01
here are some examples
1900-01-06 00:00:00.000
blows up, because you can't add 20100101 days to 1900-01-01..you go above the limit
convert to char first
试试这个:
Try this:
一个更简单、可能更快的解决方案是使用 DATEFROMPARTS 和一些算术。
db<>fiddle
A simpler, and possibly faster solution is to use
DATEFROMPARTS
and a bit of arithmetic.db<>fiddle
在该字段上使用
where
子句来忽略空值和零值use a
where
clause on that field to ignore nulls and zero values