日期选择查询选择明天值

The*_*lin 1 sql sql-server-2014

我有一个问题:

SELECT *
  FROM [PivotedData15]
  where ReadingDate BETWEEN '2019-02-11 00:01:00' AND  '2019-02-12 00:00:00'
  and Serial='2219'
Run Code Online (Sandbox Code Playgroud)

它会返回第12个的明天值,而不是第11个和第12个之间的值.

我必须在读数结束时的第二天的第二天午夜(午夜,因为那是当天的有效读数).

我想知道为什么,这个查询带回明天的价值,这引出了什么是在具有点的问题between> <等.

中间声明中的所有日期都必须在同一天吗?它是否会带回明天的值,因为最后数据集中有明天的值?

我在下拉框中添加了一个名为Data的输出文件.我不能让SQL Fiddle工作.

Dropbox代码和结果

Gor*_*off 5

BETWEEN包容性.据推测,你想要:

SELECT *
FROM [PivotedData15]
WHERE ReadingDate >= '2019-02-11' AND
      ReadingDate < '2019-02-12' AND
      Serial = '2219';
Run Code Online (Sandbox Code Playgroud)

根据你的描述,我不清楚比较是否正是你所需要的(你想要>/ <=例如吗?).但是,与两个终点的个别比较是要走的路.

我强烈建议您不要使用BETWEEN日期/时间值.Aaron Bertrand有一个关于这个主题的非常好的博客BETWEEN和魔鬼有什么共同之处?.