【问题标题】:SQL Server issue with ISDATE('3/31/019')ISDATE(\'3/31/019\') 的 SQL Server 问题
【发布时间】:2023-01-08 04:32:04
【问题描述】:

当我尝试验证以下日期时,我发现了以下问题

ISDATE('3/31/019') 此返回 1,但不是有效日期,当您尝试转换时(日期,'3/31/019')您将收到错误

我希望 ISDATE('3/31/019') 返回不同的 1

【问题讨论】:

标签: sql sql-server


【解决方案1】:

documentation 声明(我强调):

如果表达式有效则返回 1约会时间价值;否则,0。

所以如果你运行:

SELECT convert(datetime, '3/31/019');

会话设置为 SET DATEFMT mdy 的结果成功,值为“2019-03-31 00:00:00.000”。

代替 ISDATE,使用 TRY_CONVERTTRY_CAST 来确定表达式是否可以转换为日期。如果不可转换,结果将是NULL

【讨论】:

    【解决方案2】:

    根据ISDATE documentation

    如果表达式有效则返回 1约会时间价值;否则, 0。

    当您尝试转换为日期格式。

    下面的查询运行没有问题 SELECT CONVERT(datetime, '3/31/019')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2012-02-18
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      相关资源
      最近更新 更多