错误返回所选日期

D.J*_*Joe 0 sql sql-server

我想要选择日期

SELECT  [Dt]
      ,[CustomerName]
      ,[PayerName]
      ,[ItemRelation]
      ,[ProductName]
      ,[SaleCount]
      ,[DocumentNum]
      ,[DocumentYear]
      ,[IsPromo]
      ,[CustomerType]
      ,[koef]
  FROM [Action].[dbo].[mytab1]
 where dt> 2018-06-27
 order by dt
Run Code Online (Sandbox Code Playgroud)

结果我得到了

Dt
2017-10-12 00:00:00.000
2017-10-12 00:00:00.000
2017-10-12 00:00:00.000
2017-10-12 00:00:00.000
2017-10-13 00:00:00.000
2017-10-13 00:00:00.000
2017-10-13 00:00:00.000
2017-10-13 00:00:00.000
2017-10-14 00:00:00.000
2017-10-14 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

怎么了?为什么查询返回所有数据而不是> 2018-06-27

Lar*_*rnu 5

像肖恩所说的,这里的问题在于你使用的是数值表达式2018-06-27,它的计算结果为1985.如果转换1985为a datetime,则获得值1905-06-09 00:00:00.000,因此您的WHERE子句是有效的:

WHERE dt> '1905-06-09T00:00:00.000'
Run Code Online (Sandbox Code Playgroud)

就像肖恩也说的那样,使用一个文字字符串和一个明确的格式(这些是yyyyMMddyyyyMMddThh:mm:ss.sss.因此你的WHERE条款应该是:

WHERE dt > '20180627'
Run Code Online (Sandbox Code Playgroud)