我在这里做错了什么?我查看了其他帖子,但我得到的结果与其他人不同。
尝试将varchar YYYYMMDD转换为datetime,我不断获取: Msg 8115,Level 16,State 2,Line 2 将表达式转换为数据类型datetime的算术溢出错误。
尝试:
InvalidOperationException
我在这里搞砸了一些明显的东西吗?
答案 0 :(得分:2)
您显然拥有的值不是有效日期。
在SQL Server 2012+中,我建议TRY_CONVERT()
:
TRY_CONVERT(DATETIME, EXPDATE)
然后,查看NULL
的值以查看数据问题的位置。
在早期版本中,您应该可以使用isdate()
:
(CASE WHEN ISDATE(EXPDATE) = 1 THEN CAST(EXPDATE AS DATE) END)
答案 1 :(得分:0)
我在我使用的表中有一个类似格式的日期字段(DateKey)。我使用以下语法将其转换为DATETIME:
SELECT CAST(CAST(DateKey AS VARCHAR(10)) AS DATETIME) FROM tblDate
这对你有用吗?
答案 2 :(得分:0)
优异。戈登和chancrovsky,你帮助我清除了格式不正确的值。我使用了你发布的版本的一个版本
(CASE WHEN ISDATE(ExpDate)= 1 THEN CAST(ExpDate AS DATE)ELSE NULL END)作为ExpDate
非常感谢你!