日期选择查询选择明天值

问题描述 投票:1回答:1

我有一个问题:

SELECT *
  FROM [PivotedData15]
  where ReadingDate BETWEEN '2019-02-11 00:01:00' AND  '2019-02-12 00:00:00'
  and Serial='2219'

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

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

我想理解为什么,这个查询会带来明天的值,这引出了between> <等问题的问题。

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

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

Dropbox for code and results

sql sql-server-2014
1个回答
5
投票

BETWEEN是包容性的。据推测,你想要:

SELECT *
FROM [PivotedData15]
WHERE ReadingDate >= '2019-02-11' AND
      ReadingDate < '2019-02-12' AND
      Serial = '2219';

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

我强烈建议您不要将BETWEEN与日期/时间值一起使用。 Aaron Bertrand有一个关于What do BETWEEN and the devil have in common?主题的非常好的博客。

© www.soinside.com 2019 - 2024. All rights reserved.