sql查询使用yyyy-dd-mm格式,而表为yyyy-mm-dd

klh5stk1  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(340)

如果我运行查询:

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

它只返回startdate在2020年6月4日之后的值。但是,表中的日期格式为yyyy-mm-dd hh:mm:ss.sss。
如果我运行getdate()或sysdatetime(),它将以正确的格式返回2020-06-16 14:29:29.157。
那么为什么查询使用yyyy-dd-mm呢?我如何让它在默认情况下改变?
p、 我知道我可以在查询中使用convert或format,但是由于所有日期都是yyyy-mm-dd格式,所以我希望它是默认的,并且不必每次都编写额外的代码。
编辑:我正在使用microsoft sql server management studio
edit2:我和一个同事商量过,他们也遇到了同样的情况。

9vw9lbht

9vw9lbht1#

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

startdate > '20200406'

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

8cdiaqws

8cdiaqws2#

您可以通过两种方式处理它:
在会议一级。您可以设置格式和发出查询
使用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

相关问题