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 服务器明确格式。
您可以通过两种方式处理:
在会话级别。您可以设置格式并发出查询
使用 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
如果我运行查询:
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 服务器明确格式。
您可以通过两种方式处理:
在会话级别。您可以设置格式并发出查询
使用 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