【发布时间】:2014-10-26 16:55:34
【问题描述】:
再次预订系统和日期范围。 我读过这个话题Comparing date ranges 和许多其他人, 但找不到答案:(
请参阅 SQLFiddle http://sqlfiddle.com/#!2/89b2b/2
我有预订表,在MySQL 中有ID、ObjectID、PeriodStart 和PeriodEnd 类型的字段DATE
我的示例数据如下所示:
(1, 3, '2014-08-07', '2014-08-14'),
(2, 3, '2014-08-19', '2014-08-23'),
(3, 2, '2014-08-13', '2014-08-15'),
(4, 2, '2014-08-19', '2014-08-21');
我的查询日期间隔是(更新,是$from = '2014-08-14';):
$from = '2014-08-15';
$to = '2014-08-19'
我想获得在查询日期间隔内免费的ObjectIDs。
问题是,对象的2 第一次预订在2014-08-15 结束,我们想从2014-08-15 开始新的预订。与结束日期 2014-08-19 相同。现有预订从这一天开始。 humans 可以,因为我们将日期周期计算为 nights,但是如何将相同的事情告诉 MySQL?
对于这些变量
$from = '2014-08-15';
$to = '2014-08-19'
我想得到[2, 3] 作为查询的结果。
第二次查询
$from = '2014-08-14';
$to = '2014-08-19'
我只想得到 [3] 作为查询结果,因为 ObjectID 2 是从 13 aug 预订到 15 aug
【问题讨论】:
-
WHERE PeriodStart <= '2014-08-19' AND PeriodEnd >= '2014-08-14':我误解了你的问题还是你把 periodStart 和 periodEnd 颠倒了? -
为什么
2会出现在结果中? -
@GordonLinoff 好点。我的错。 :(
标签: mysql sql date date-range