我有一个price_table,其中有两列:start_date和end_date(用于促销价格)。
我正在尝试创建一个查询,该查询将检查给定的日期范围是否不属于另一个已经存在的日期范围。
我一直在尝试使用以下查询:
SELECT *
FROM tbl_preco
WHERE isActive = 1 AND (start_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00'
OR end_date between '2014-12-11 15:45:00' AND '2014-12-13 11:45:00')
问题是:
从2014-12-10 15:30:00
到都有促销价格2014-12-13 14:30:00
,因此即使给定范围实际上在DB的范围内,两个BETWEEN指令都没有抓住这个价格。
|------GIVEN RANGE-------|
|-------- RANGE IN DB --------|
上面的示例应返回为TRUE,应用程序将告诉用户在给定范围内已经有促销价格。
听起来您想在此范围内进行任何促销销售。在这种情况下,您无需检查范围中是否存在开始日期和结束日期,这就是您现在正在执行的操作。您只需要检查开始日期是否在范围关闭之前发生,然后检查结束日期是否在范围打开之后发生。希望这有意义吗?
SELECT *
FROM tbl_preco
WHERE isActive = 1
AND start_date < '2014-12-13 11:45:00'
AND end_date > '2014-12-11 15:45:00';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句