我有一个使用varchar
列[BadColumn]
的表格的应用,该表格由MM/DD/YYYY
格式的日期填充,或者至少包含[BadColumn]
行包含。
我无法控制修改此表并更改数据类型。
我需要报告此数据以显示一周内的行。
这是我的问题:
每次我使用某些东西来比较/过滤日期时我都会收到错误
从字符串
转换日期和/或时间时转换失败
所以我到目前为止所做的就是:
尝试创建一个视图,Date
转换为[NewBadColumn]
类型列Convert(date, BadColumn)
,并使用{{1将原始表中的值转换为日期类型}}。视图已填充,但现在当我仍尝试使用DateADD
进行查询或进行任何日期比较时,我会收到相同的错误。
我也试过使用Convert(Date, BadColumn, 105)
,但同样的问题。
我尝试了其他格式,但仍然无法在该列上进行日期比较。
我不确定哪一行会引发错误,我如何找到它并解决此问题。
感谢您的回复。我已经尝试使用ISDate函数来查找错误的记录。 但我仍然收到相同的错误" 从字符串转换日期和/或时间时转换失败。"当我尝试使用DateAdd。
这是我正在使用的代码:
选择t。* 从 (选择*来自dbo.BadTableName q with(nolock) 其中ISDate(BadColumn)= 1且ISDATE(BadColumn)不为空 )t 其中t.BadColumn> DATEADD(dd,-2,GetDATE())
任何帮助表示赞赏。
答案 0 :(得分:1)
尝试使用ISDATE()
功能检查列。您可以在不先创建视图的情况下执行此操作。
IF ISDATE(YourColumn) = 1
DATEADD (datepart , number , YourColumn )
ELSE 'No valid date provided'
答案 1 :(得分:0)