错误返回所选日期

时间:2018-08-06 15:49:02

标签: 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

结果我明白了

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

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

2 个答案:

答案 0 :(得分:5)

就像肖恩(Sean)所说的那样,这里的问题是您正在使用数值表达式HttpMessageHandler,其结果为2018-06-27。如果将1985转换为1985,则会得到值datetime,因此1905-06-09 00:00:00.000子句实际上是:

WHERE

就像肖恩一样,请使用文字字符串和明确的格式(它们是WHERE dt> '1905-06-09T00:00:00.000' yyyyMMdd。因此,您的yyyyMMddThh:mm:ss.sss子句应为:

WHERE

答案 1 :(得分:2)

@ D.Joe,您需要将日期变量更改为单引号。

发件人:

WHERE dt > '20180627'

收件人:

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