加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2008 – 在SQL Server 2008中查找无效日期

发布时间:2020-12-12 07:29:39 所属栏目:MsSql教程 来源:网络整理
导读:我有300.000行表;其中一列是varchar()但它确实包含日期xx / xx / xxxx或x / x / xxxx或类似的.但执行以下测试会产生错误: SELECT CAST(MyDate as Datetime) FROM MyTable 问题是它没有告诉我哪一行…… 我通过试验错误执行了一系列“手动”更新并执行了简单
我有300.000行表;其中一列是varchar()但它确实包含日期xx / xx / xxxx或x / x / xxxx或类似的.但执行以下测试会产生错误:
SELECT CAST(MyDate as Datetime) FROM MyTable

问题是它没有告诉我哪一行……

我通过试验错误执行了一系列“手动”更新并执行了简单的更新来修复这些更新,但必须有一些奇怪的值需要删除或修复.

例如,我执行了一个修复了大约40行的简单测试:

UPDATE MyTable SET MyDate = REPLACE(MyDate,'/000','/200') FROM MyTable WHERE MyDate like ('%/000%’)
UPDATE MyTable SET MyDate = REPLACE(MyDate,'/190','/199') FROM MyTable WHERE MyDate like ('%/190%’)

这修复了很多奇怪的行,其日期类似于01/01/0003等. (日期范围从1998年到2010年).

但是,我想知道上面的选择中哪些行失败了.

什么是最好的打印方式,所以我可以删除它们,编辑它们或看看该怎么做?谢谢.

解决方法

SELECT
    *
FROM
   MyTable
WHERE
    ISDATE(MyDate) = 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读