【问题标题】:T-SQL Dealing with Rogue data when Converting to Datetime转换为日期时间时 T-SQL 处理流氓数据
【发布时间】:2013-11-30 03:23:05
【问题描述】:

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

我正在尝试这样做MAX(Convert(datetime,Action.DateOfAction, 102));但是,由于存在一些无效数据,我收到了超出范围的错误。

我该如何解决这个问题?我不能只修复数据,因为很明显我们仍然会偶尔收到一些用户输入的无效数据,而且我无法修复应用程序,因为我没有源。

谢谢

伊恩

【问题讨论】:

  • 这可能是你的答案:stackoverflow.com/questions/2000045/…
  • 你读过关于人工智能的文章吗?也许它可以弄清楚用户的意图......但我不能。日期时间可以转换为浮点数。如果您不能将其转换为浮点数,则它不是有效的日期时间。你能帮助我们了解你想要发生的事情吗?如果它不能转换,null?

标签: sql-server tsql datetime outofrangeexception


【解决方案1】:

您需要确定如何处理不良数据,但您似乎想要IF ISDATE

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

【讨论】:

    【解决方案2】:

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

    一般来说,我可以创建一个视图或计算列,并使用 isdate 给我日期,如果无法“解析”,则返回 null。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2016-06-01
      • 2018-11-03
      • 1970-01-01
      相关资源
      最近更新 更多