将varchar YYYYMMDD转换为datetime以与GETDATE()进行比较

时间:2016-02-26 23:24:40

标签: sql sql-server date datetime

我在这里做错了什么?我查看了其他帖子,但我得到的结果与其他人不同。

尝试将varchar YYYYMMDD转换为datetime,我不断获取: Msg 8115,Level 16,State 2,Line 2 将表达式转换为数据类型datetime的算术溢出错误。

尝试:

InvalidOperationException

我在这里搞砸了一些明显的东西吗?

3 个答案:

答案 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

非常感谢你!