You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将varchar类型日期(dd/mm/yyyy)转为datetime时遇范围错误

varchar转datetime提示“数据类型转换导致值超出范围”的解决办法
  • 定位异常数据
    错误根源是部分NEWPHASEdt字段的字符串格式不符合datetime的合法范围(比如示例中的2022-16-09,16作为月份明显无效)。先用SQL找出所有无法转换的异常值:

    SELECT NEWPHASEdt
    FROM 你的数据表名
    WHERE ISDATE(NEWPHASEdt) = 0
    
  • 修正格式后转换
    如果发现异常是因为日期格式颠倒(比如存储的是yyyy-dd-mm hh:mm:ss.fff,而非标准的yyyy-mm-dd hh:mm:ss.fff),可以通过字符串调整先修正格式,再转换为datetime:

    -- 针对yyyy-dd-mm格式的字符串,交换日和月后转datetime
    SELECT CONVERT(datetime, 
      LEFT(NEWPHASEdt,4) + '-' + SUBSTRING(NEWPHASEdt,9,2) + '-' + SUBSTRING(NEWPHASEdt,6,2) + RIGHT(NEWPHASEdt,12),
      120
    ) AS converted_dt
    FROM 你的数据表名
    

    注:RIGHT(NEWPHASEdt,12)是截取时间部分(00:00:00.000),如果你的时间部分长度不一致,需要调整截取长度。

  • 处理无效数据
    对于确实存在的无效日期(比如月份>12、日期>当月最大天数),可以根据业务需求处理:

    -- 标记无效数据为NULL
    UPDATE 你的数据表名
    SET NEWPHASEdt = NULL
    WHERE ISDATE(NEWPHASEdt) = 0
    
    -- 直接删除无效数据(操作前务必备份)
    DELETE FROM 你的数据表名
    WHERE ISDATE(NEWPHASEdt) = 0
    

内容的提问来源于stack exchange,提问作者asdaswsad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:45:32