我有一个价格表,有两列:开始日期和结束日期(用于促销价格)。
我正在尝试创建一个查询来检查给定的日期范围是否不属于另一个已经存在的日期范围。
我一直在尝试使用这个查询:
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')
Run Code Online (Sandbox Code Playgroud)
问题是:
2014-12-10 15:30:00从到存在促销价格2014-12-13 14:30:00,因此两个 BETWEEN 指令都没有捕获它,即使给定范围实际上在数据库中的范围内。
|------GIVEN RANGE-------|
|-------- RANGE IN DB --------|
Run Code Online (Sandbox Code Playgroud)
上面的示例应返回 TRUE,应用程序将告诉用户给定范围内已经有促销价格。