【发布时间】:2014-06-16 14:59:03
【问题描述】:
我有一个应用程序使用一个表,该表有一个varchar 列[BadColumn],该列由MM/DD/YYYY 格式的日期填充,或者至少大多数行都包含该列。
我无法控制修改此表和更改数据类型。
我需要报告此数据以显示一周内的行。
这是我的问题:
每次我使用某些东西来比较/过滤日期时都会出错
从字符串转换日期和/或时间时转换失败
所以这是我迄今为止尝试过的:
尝试创建一个视图,其中
[BadColumn]被转换为Date类型列[NewBadColumn],并使用Convert(date, BadColumn)将原始表中的值转换为日期类型。视图被填充,但现在当我仍然尝试使用DateADD进行查询或进行任何日期比较时,我得到了同样的错误。我也尝试使用
Convert(Date, BadColumn, 105),但同样的问题。我尝试了其他格式,但同样的问题仍然无法对该列进行日期比较。
我不确定是哪一行引发了错误,如何找到并解决此问题。
感谢您的回复。我曾尝试使用 ISDate 函数来查找不良记录。 但是当我尝试使用 DateAdd 时,我仍然收到相同的错误“从字符串转换日期和/或时间时转换失败。”。
这是我正在使用的代码:
选择 t.* 从 (Select * from dbo.BadTableName q with (nolock) 其中 ISDate(BadColumn)=1 且 ISDATE(BadColumn) 不为空 ) 吨 其中 t.BadColumn > DATEADD(dd,-2, GetDATE())
任何帮助表示赞赏。
【问题讨论】: