【发布时间】:2022-01-19 15:28:15
【问题描述】:
我的本地 SQL Server 2016 设置在重新安装后决定不接受 YMD 日期格式。例如,我同事的设置接受并且仍然接受以下查询:
SELECT "id"
FROM test.dbo.tabEmp
WHERE "DateAdmission" <= '2021-12-31' AND "DateAdmission">= '2021-12-30' `
当我尝试运行它时,我看到了这个:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
但是,如果我将日期改写为2021-31-12 和2021-12-30,采用YYYY-DD-MM 格式,它们会被接受。
我无法真正转换或格式化它,因为我们系统中的 sql 查询数量众多,而且几乎不可能做到这一点。有什么可以做的吗?我尝试更改 Windows 的日期格式,但无济于事。
【问题讨论】:
-
这是否针对在您的设置中本地运行的 SQL 实例?
-
@motosubatsu 是的。
-
在这种情况下,Sql Server 获取了本地系统的文化日期/时间设置,这与您的同事不同。
-
YYYY-MM-DD 格式不安全。它可能会根据数据库的语言设置错误地解释值。唯一安全的格式是 YYYYMMDD,该格式将始终正常工作。
-
查看 Aaron Bertrand 的演示。 mssqltips.com/sqlservertutorial/9315/…
标签: sql-server date datetime date-formatting