SQL 服务器错误地解析日期

SQL Server Incorrectly Parsing Date

SQL 服务器 2005

SELECT TOP 10 * FROM abc WHERE aDate = '2014-01-20'

在 SSMS 中查询上述内容时,通常会 return 结果是 aDate 是 2014 年 1 月 20 日。但是对于同一服务器上的另一个用户,它 return 是一个日期转换错误,只有在运行 以下查询:

SELECT TOP 10 * FROM abc WHERE aDate = '2014-20-01'

我检查了本地机器上的区域语言设置,它和我的完全一样。欢迎任何想法。

在这种情况下,重要的不是计算机上的区域语言设置,而是数据库选项中定义的设置。

无论如何,为了避免在查询中解析日期时间时必须依赖区域语言设置,我鼓励您使用不变的 ISO 日期格式:{d 'yyyy-MM-dd'}。请注意,还有一个用于指定小时数 (ts)。

发生此错误的原因是 SQL 服务器尝试将日期值 20 解析为月份,并导致错误,因为 20 不是有效的月份。始终使用日期格式 'dd-MMM-yyyy' 适用于任何类型的 SQL COLLATION 和区域语言设置。

它是特定于帐户的,设置存储为 'British - English' 而不是 'English'。将其更改为 'English' 解决了问题。感谢您的回复。