Les*_*ago 1 sql-server datetime date date-formatting
我的本地 SQL Server 2016 设置在重新安装后决定不接受 YMD 日期格式。例如,以下查询在我同事的设置中过去和现在仍然被接受:
SELECT "id"
FROM test.dbo.tabEmp
WHERE "DateAdmission" <= '2021-12-31' AND "DateAdmission">= '2021-12-30' `
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我看到这个:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
但是,如果我将日期重写为2021-31-12和2021-12-30,则YYYY-DD-MM它们会被接受。
我无法真正转换或格式化它,因为我们系统中的 sql 查询非常多,并且以几乎不可能的方式完成。有什么可以做的吗?我尝试更改 Windows 的日期格式但无济于事。
对于datetime和smalldatetime数据类型,格式yyyy-MM-dd并不明确(请注意,它适用于较新的日期和时间数据类型)。如果您不是美国人,该日期很可能会被解释为yyyy-dd-MM,并且由于一年中没有 31 个月,您会收到错误。
对于 SQL Server,无论数据类型和语言设置如何,明确的格式是yyyyMMdd和yyyy-MM-ddThh:mm:ss.nnnnnnn;理想情况下,如果您使用字符串文字,请使用其中一种格式,因为您永远不会收到错误(除非您合法地拥有无效日期)。
否则,您可以CONVERT使用样式代码明确您的值:
SELECT CONVERT(datetime, '2021-12-31', 126);
Run Code Online (Sandbox Code Playgroud)