SQL 查询使用 YYYY-DD-MM 格式,当 table 是 YYYY-MM-DD

SQL query is using YYYY-DD-MM format, when table is YYYY-MM-DD

如果我运行查询:

select    startdate, count(*)
from      tablename
where     startdate > '2020-04-06'

只有 returns 开始日期在 2020 年 6 月 4 日之后的值。但是 table 中的日期格式为 YYYY-MM-DD HH:mm:ss.sss.

如果我 运行 getdate() 或 sysdatetime() 它 returns 2020-06-16 14:29:29.157 格式正确。

那么为什么查询使用 YYYY-DD-MM?我如何让它默认更改?

P.S。我知道我可以在查询中使用 CONVERT 或 FORMAT,但由于所有日期都将采用 YYYY-MM-DD 格式,我希望这是默认格式,而不必每次都编写额外的代码。

编辑:我正在使用 Microsoft SQL Server Management Studio

EDIT2:我咨询了一位同事,他们也遇到了同样的事情。

这取决于各种设置。您可以通过删除连字符来解决此问题:

startdate > '20200406'

在SQL服务器中,这种格式总是明确的,YYYYMMDD。我更喜欢带连字符的版本,因为它更标准。但是,如果您将此作为一个问题来处理,我建议您使用 SQL 服务器明确格式。

您可以通过两种方式处理:

  1. 在会话级别。您可以设置格式并发出查询

  2. 使用 ISO 8601 格式(推荐)

DECLARE @table table(a datetime)
INSERT INTO @table values('2020-04-06')

SELECT * FROM @table WHERE A = '2020-04-06' -- ISO 8601

set dateformat ymd
SELECT * FROM @table WHERE A = '2020-04-06' -- Format change