SQL Server-检查where子句中两个日期之间的日期字段

时间:2019-07-12 18:23:52

标签: sql-server tsql

在以下查询中,返回的日期为2019-07-12 14:12:58.253

 SELECT MAX(fileDate) AS maxdate FROM filetable

此查询返回以下值2019-07-11 23:46:20.317

 SELECT MAX(fileDate) AS maxdate FROM filetable WHERE fileDate BETWEEN '2019-01-18' AND '2019-07-12'

我尝试使用> =和<=代替BETWEEN来获得相同的结果。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

针对'2019-07-12'

datetime将隐式转换为datetime 2019-07-12T00:00:00.000。对于带有WHERE子句fileDate BETWEEN '2019-01-18' AND '2019-07-12'的查询,这意味着2019-07-12T14:12:58.253之类的值超出了范围,因为它比2019-07-12T00:00:00.000大。

常见的方法是使用>=<,其中<的值是您需要的日期之后的日期。因此,您将得到以下结果:

SELECT MAX(fileDate) AS maxdate
FROM filetable
WHERE fileDate >= '2019-01-18'
  AND fileDate < '2019-07-13';