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

MS SQL Server yyyy-mm-dd日期格式颠倒解析异常配置问题咨询

问题根源

这是SQL Server的**DATEFORMAT(日期解析顺序)配置继承了德语版操作系统的区域规则**导致的问题,具体逻辑如下:

  1. 德语地区的默认日期顺序为日-月-年,德语版Windows 10的系统区域短日期格式默认遵循该规则,SQL Server安装时会默认继承系统区域设置,将全局/会话默认的DATEFORMAT参数设为dmy。
  2. 你使用的带分隔符的yyyy-mm-dd格式并非SQL Server datetime类型的区域安全格式:只有无分隔符的yyyyMMdd、带ISO 8601标记的yyyy-MM-ddTHH:mm:ss两种格式完全不受DATEFORMAT影响,普通带横杠/斜杠的日期字符串都会按当前DATEFORMAT规则解析。
  3. 你遇到的现象完全符合dmy规则的解析逻辑:
    • 2021-17-05会被解析为「2021年、第5个月、第17天」,日期合法所以能正常执行
    • 2021-05-17会被尝试解析为「2021年、第17个月、第5天」,月份超出1-12的合法范围所以报错/无结果

另外注意你示例SQL中存在语法错误:WHERE 'dbo.Messwerte.datetime' = 'xxx'给列名加了单引号,实际是字符串和字符串的比较,而非过滤表字段,需要去掉列名的单引号,改为WHERE [DateTime] = 'xxx'。

解决方案

  • 临时会话生效:执行SQL命令 SET DATEFORMAT ymd; 即可让当前会话的日期解析顺序改为年-月-日。
  • 全局生效:打开SSMS→右键服务器名称选择「属性」→「高级」选项卡→修改「默认语言」为中文/英文(对应DATEFORMAT为ymd),修改后重启SQL Server服务生效。
  • 永久规避方案:所有日期字符串统一使用区域安全格式,比如'20210517',或者显式用CONVERT指定格式:CONVERT(DATETIME, '2021-05-17', 23),23为yyyy-mm-dd对应的格式代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:02