Sql 如何解决日期不包括在内的问题

Sql 如何解决日期不包括在内的问题,sql,between,Sql,Between,我想搜索给定日期之间的数据。我能够得到介于之间的结果,但不包括between语句开头和结尾的那一天 我试着切换使用中间日期的日期,比如加一天或减一天,但必须有另一种方法 SQL: 我应该得到这两天之间的所有数据,包括第二天和第六天完成的工作,但由于某种原因,我没有在第六天完成工作。救命啊 不要在日期之间使用!时间组件可能会导致问题。相反: where date >= '2019-09-02' and date < '2019-09-07' and -- note t

我想搜索给定日期之间的数据。我能够得到介于之间的结果,但不包括between语句开头和结尾的那一天

我试着切换使用中间日期的日期,比如加一天或减一天,但必须有另一种方法

SQL:

我应该得到这两天之间的所有数据,包括第二天和第六天完成的工作,但由于某种原因,我没有在第六天完成工作。救命啊

不要在日期之间使用!时间组件可能会导致问题。相反:

where date >= '2019-09-02' and
      date < '2019-09-07' and    -- note this is one day later
      . . . 

大多数数据库都理解日期常量的YYYY-MM-DD。

根据我的经验,当日期字段是时间戳数据类型时,就会发生这种情况。发生的情况是,一个特定的日期,例如2019年2月9日,它被解释为2019年2月9日00:00:00,因此之前的任何值都被排除在外

请尝试ORACLE DBMS:

请尝试SQL Server:


日期是什么数据类型?您使用的是哪种DBMS产品?日期值没有时间组件,只有在Oracle@a_horse_with_no_name . . . 我仍然认为这是一种最佳实践,因为通常只看数据,不清楚值是日期还是日期/时间。您可能会对Aaron Bertrand关于SQL Server的主题所说的内容感兴趣:。我知道那篇博文。虽然对于时间戳或Oracle的日期值是正确的,但对于真实的日期值则不正确。在日期被索引的情况下,使用truncDate会关闭索引范围扫描
where date >= '2019-09-02' and
      date < '2019-09-07' and    -- note this is one day later
      . . . 
WHERE Trunc("Date") Between '09/02/2019' AND '09/06/2019' 
WHERE cast("Date" As Date) Between '09/02/2019' AND '09/06/2019'