Mysql 查询日期范围
Mysql query with range of dates
我有一个像这样的table:
Items start_datatime end_datatime
A1 2015-01-31 10:00:00 2015-02-02 20:30:00
A2 2015-02-04 16:00:00 2015-02-04 16:30:00
而且我想 select 给定日期时间(例如:2015-02-02)的项目。
所以,我正在尝试这个查询:
SELECT Items FROM table WHERE start_datatime >= 2015-02-02 00:00:00
AND end_datatime < 2015-02-03 00:00:00
在这个例子中,我想 select item A1 when date is 2015-01-31, 2015-02-01 and 2015-02-02. A2 当日期是 2015-02-04 时。
删除第二个 WHERE,它应该可以工作:
SELECT Items FROM table WHERE start_datatime >= 2015-02-02 00:00:00 AND end_datatime <= 2015-02-02 00:00:00
为了改进它,我会将 end_datatime <= 2015-02-02 00:00:00
更改为 end_datatime < 2015-02-02 00:00:00
,因为您的解决方案将包括所有在第二天结束的项目。
还要考虑在那天之前开始并在那天之后结束的项目。他们应该被排除在外吗?在您的解决方案中,这会发生。
如果您想要任何在该日期重叠的记录,逻辑将是:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-03 00:00:00' AND
end_datatime >= '2015-02-02 00:00:00';
如果您想要完全重叠,那么整个时间段都包括这一天:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-02 00:00:00' AND
end_datatime >= '2015-02-03 00:00:00';
而且,如果您只关心一天开始时的午夜:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-02 00:00:00' AND
end_datatime >= '2015-02-02 00:00:00';
我有一个像这样的table:
Items start_datatime end_datatime
A1 2015-01-31 10:00:00 2015-02-02 20:30:00
A2 2015-02-04 16:00:00 2015-02-04 16:30:00
而且我想 select 给定日期时间(例如:2015-02-02)的项目。
所以,我正在尝试这个查询:
SELECT Items FROM table WHERE start_datatime >= 2015-02-02 00:00:00
AND end_datatime < 2015-02-03 00:00:00
在这个例子中,我想 select item A1 when date is 2015-01-31, 2015-02-01 and 2015-02-02. A2 当日期是 2015-02-04 时。
删除第二个 WHERE,它应该可以工作:
SELECT Items FROM table WHERE start_datatime >= 2015-02-02 00:00:00 AND end_datatime <= 2015-02-02 00:00:00
为了改进它,我会将 end_datatime <= 2015-02-02 00:00:00
更改为 end_datatime < 2015-02-02 00:00:00
,因为您的解决方案将包括所有在第二天结束的项目。
还要考虑在那天之前开始并在那天之后结束的项目。他们应该被排除在外吗?在您的解决方案中,这会发生。
如果您想要任何在该日期重叠的记录,逻辑将是:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-03 00:00:00' AND
end_datatime >= '2015-02-02 00:00:00';
如果您想要完全重叠,那么整个时间段都包括这一天:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-02 00:00:00' AND
end_datatime >= '2015-02-03 00:00:00';
而且,如果您只关心一天开始时的午夜:
SELECT Items
FROM table
WHERE start_datatime <= '2015-02-02 00:00:00' AND
end_datatime >= '2015-02-02 00:00:00';