SQL查询采用YYYY-DD-MM格式,当表是YYYY-MM-DD时

问题描述 投票:1回答:1

如果我运行这个查询。

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

它只返回起始日期在2020年6月4日之后的值。然而表中的日期是以YYYY-MM-DD HH:MM:SSS.SSS的格式。

如果我运行getdate()或sysdatetime(),它会以正确的格式返回2020-06-16 14:29:29.157。

那么为什么查询使用YYYY-DD-MM?我怎样才能让它变成默认的格式?

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

EDIT: 我使用的是Microsoft SQL Server Management Studio。

EDIT2:我和同事检查了一下,同样的事情发生在他们身上。

sql sql-server date datetime datetime-format
1个回答
4
投票

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

startdate > '20200406'

在SQL Server中,这种格式总是毫不含糊,YYYYMMDD。 我更喜欢带连字符的版本,因为它更标准。 但如果你是作为一个问题来处理,我建议使用SQL Server的不含糊格式。


2
投票

你可以用两种方式来处理它。

  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
© www.soinside.com 2019 - 2024. All rights reserved.