转换为Datetime时,T-SQL处理Rogue数据

时间:2013-11-29 18:36:36

标签: sql-server tsql datetime outofrangeexception

我将数据从CRM中提取到报告系统中。 不幸的是,CRM的开发人员认为将date存储为string是个好主意,然后不对该字段进行验证。

我正在尝试这样做MAX(Convert(datetime,Action.DateOfAction, 102));但是,因为有一些无效数据,我得到一个超出范围的错误。

我该如何解决这个问题?我不能简单地修复数据,因为我们偶尔会得到一些用户输入的无效数据,而且我无法修复应用程序,因为我没有源代码。

由于

伊恩

2 个答案:

答案 0 :(得分:2)

您需要确定如何处理不良数据,但看起来您想要IF ISDATE

IF ISDATE(Action.DateOfAction) //do whatever
ELSE //Handle Bad data

答案 1 :(得分:0)

这取决于您的要求,但也有其他选择。 艾伦给了一个好的,另一个可以用try catch。

通过一般方法,我可以创建一个视图或计算列,并使用isdate为我提供日期,如果无法“解析”,则返回null。

警告,设置日期格式/语言/本地化更改isdate评估。