开发者社区> 问答> 正文

SQL Server DateTime转换失败

我需要进行简单的日期比较-

datediff(dd, convert(datetime, lastUpdate, 100), getDate()) < 31

但它在以下方面失败convert():

Conversion failed when converting datetime from character string.

显然,在该字段中有一些它不喜欢的东西,并且由于记录太多,我不能仅仅通过查看就知道。如何正确清理整个日期字段,以确保它不会失败convert()?这是我现在所拥有的:

select count(*)
from MyTable
where
    isdate(lastUpdate) > 0
    and datediff(dd, convert(datetime, lastUpdate, 100), getDate()) < 31

展开
收起
心有灵_夕 2019-12-25 20:45:47 831 0
1 条回答
写回答
取消 提交回答
  • 8

    将CASE和ISDATE放在CONVERT()函数内。

    SELECT COUNT(*) FROM MyTable
    WHERE
        DATEDIFF(dd, CONVERT(DATETIME, CASE IsDate(lastUpdate)
            WHEN 1 THEN lastUpdate
            ELSE '12-30-1899'
        END), GetDate()) < 31
    
    

    用'12-30-1899'您选择的默认日期替换。

    2019-12-25 20:46:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载