选择给定时间间隔的行

时间:2015-09-16 12:04:45

标签: sql sqlite

我遇到了在给定时间间隔内选择项目的问题。 为了说明问题,让我们考虑使用以下字段的表Orders

- id
- order_date
- order_time
- details

我有MJD格式的order_date,order_time是秒。 例如。, order_date = 57281(在MJD中)// 2015年9月16日 order_time = 32400(以秒为单位)// 9:00 AM

SELECT * FROM
(SELECT Orders.id, Orders.order_date date, 
Orders.order_time time FROM Orders 
WHERE Orders.date<=endDate and Orders.order_time < endTime)
WHERE date>=startDate and time > startTime

这似乎没有返回正确的值,因为只有当日期是开始日期时才能检查以下时间。

WHERE date>=startDate and time > startTime

这里可能缺少什么?有没有其他简单的方法来处理这种查询?请建议。

2 个答案:

答案 0 :(得分:1)

首先将日期和时间转换为组合的日期时间值,然后只使用一个条件,您可以使用WHERE dateTime BETWEEN startDateTime AND endDateTime

问题是你已经使用第一个条件过滤了记录,这使得第二个条件只有有时间的日期时间,例如<9:00AM

当您在某个时间间隔内查找日期时间值时,分别比较日期和时间会产生误导,因为当时间间隔为'2015-09-16 12:00:00' - '2015-09-17 12:00:00'时,您会错过'2015-09-16 13:00:00''2015-09-16 14:00:00'等值,因为它们的值较高时间价值超过endTime= '12:00:00'

答案 1 :(得分:0)

你也可以尝试这个,它对我有用。

Where 
   DATE(date) >= startDate
   AND DATE(time) >= StartTime

OrElse您可以使用

Where
    datetime(StartDate) <= now()

如需更高级的帮助,请查看SQL