使用DateAdd - SQL时出错

时间:2014-06-16 14:59:03

标签: sql-server-2008 dateadd

我有一个使用varchar[BadColumn]的表格的应用,该表格由MM/DD/YYYY格式的日期填充,或者至少包含[BadColumn]行包含。

我无法控制修改此表并更改数据类型。

我需要报告此数据以显示一周内的行。

这是我的问题:

每次我使用某些东西来比较/过滤日期时我都会收到错误

  

从字符串

转换日期和/或时间时转换失败

所以我到目前为止所做的就是:

  1. 尝试创建一个视图,Date转换为[NewBadColumn]类型列Convert(date, BadColumn),并使用{{1将原始表中的值转换为日期类型}}。视图已填充,但现在当我仍尝试使用DateADD进行查询或进行任何日期比较时,我会收到相同的错误。

  2. 我也试过使用Convert(Date, BadColumn, 105),但同样的问题。

  3. 我尝试了其他格式,但仍然无法在该列上进行日期比较。

  4. 我不确定哪一行会引发错误,我如何找到它并解决此问题。

    感谢您的回复。我已经尝试使用ISDate函数来查找错误的记录。 但我仍然收到相同的错误" 从字符串转换日期和/或时间时转换失败。"当我尝试使用DateAdd。

    这是我正在使用的代码:

    选择t。* 从 (选择*来自dbo.BadTableName q with(nolock) 其中ISDate(BadColumn)= 1且ISDATE(BadColumn)不为空 )t 其中t.BadColumn> DATEADD(dd,-2,GetDATE())


    任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

尝试使用ISDATE()功能检查列。您可以在不先创建视图的情况下执行此操作。

IF ISDATE(YourColumn) = 1
DATEADD (datepart , number , YourColumn )
ELSE 'No valid date provided'

答案 1 :(得分:0)

查看此流量问题和答案的其他堆栈

Find invalid dates in SQL Server 2008

您可以使用 ISDATE 功能测试各行。