我遇到了在给定时间间隔内选择项目的问题。
为了说明问题,让我们考虑使用以下字段的表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
这里可能缺少什么?有没有其他简单的方法来处理这种查询?请建议。
答案 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