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

SQL Server DATE字段仅支持YYYY-MM-DD,如何兼容DD-MM-YYYY格式?

解决SQL Server DATE字段插入DD-MM-YYYY格式日期的问题

出现这个错误是因为SQL Server默认的日期解析规则(比如DATEFORMAT设置为MDY,即月-日-年)会把26-12-2022里的26当成月份,显然超出了1-12的范围,所以触发Msg 241转换失败。而YYYY-MM-DD是ISO标准日期格式,不受会话设置影响,所以能正常插入。

以下是几种让字段支持DD-MM-YYYY格式插入的方法:

  • 显式用CONVERT函数转换
    插入时指定转换样式码103(对应DD/MM/YYYY格式,横杠分隔符也兼容),强制SQL Server按日-月-年的规则解析字符串:

    INSERT INTO datetime2022 (ΗΜΕΡΟΜΗΝΙΑ)
    VALUES (CONVERT(DATE, '26-12-2022', 103));
    
  • 修改当前会话的日期格式
    执行SET DATEFORMAT命令把会话的日期解析规则改成DMY(日-月-年),之后当前会话里直接插入DD-MM-YYYY格式的字符串就能正常识别:

    SET DATEFORMAT DMY;
    INSERT INTO datetime2022 (ΗΜΕΡΟΜΗΝΙΑ)
    VALUES ('26-12-2022');
    

    注意:这个设置只对当前连接会话有效,断开连接后会恢复默认值。

  • 用TRY_CONVERT做安全转换(可选)
    如果担心输入的日期字符串可能存在格式不规范的情况,可以用TRY_CONVERT替代CONVERT,转换失败时会返回NULL而不是触发错误,适合容错场景:

    INSERT INTO datetime2022 (ΗΜΕΡΟΜΗΝΙΑ)
    VALUES (TRY_CONVERT(DATE, '26-12-2022', 103));
    

    (如果字段不允许NULL,可以结合ISNULL或额外逻辑处理转换失败的情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:18:18