如何通过选择介于开始日期和结束日期之间的任何日期来显示事件

时间:2019-01-22 05:34:47

标签: php mysql date

事件A在一个月的24日至29日之间发生。如果用户选择24日之后至29日之前的任何日期。是否可以显示事件A

如果用户选择25日和27日,我正在使用此查询。

Select * 
from Events 
where DateFrom >= '25-01-2019' and DateTo <= '27-01-2019'

它不会显示事件A,因为它的开始日期和结束日期不同。

示例数据

 id  name             DateFrom           DateTo 
 1   Music eventA     2019-01-24       2019-01-29
 2   Music eventB     2019-01-25        2019-01-30

如果用户选择DateFrom'2019-01-26'和DateTo'2019-01-27'我想显示id = 1的事件,因为26和27位于24到29之间

3 个答案:

答案 0 :(得分:0)

如果要选择在所选日期范围内“发生”或“部分发生”的所有事件,则可以

Select * from Events 
where DateFrom <= '2019-01-27' and DateTo  >= '2019-01-25'

如果您只希望在指定日期的整个时间范围内发生的事件都需要

Select * from Events 
where DateFrom <= '2019-01-25' and DateTo  >= '2019-01-27'

除了使用字符串格式'2019-01-25'之外,您还可以使用数字日期格式20190125。两种形式都应同样有效。

答案 1 :(得分:0)

请如下更新您的查询。日期在查询中传递不正确。

Select * 
from Events 
where ( DateFrom >= '25-01-2019' and DateFrom <= '27-01-2019') and 
      ( DateTo >= '25-01-2019' and DateTo <= '27-01-2019' ).

答案 2 :(得分:0)

应将所选的开始日期(docker login)与数据的2019-01-26相比较,而所选的结束日期(DateFrom)应该与2019-01-27相比较,如该查询中所述,

DateTo

使用以下示例数据,其工作正确,

SELECT * 
FROM Events 
WHERE DateFrom <= '2019-01-26' 
AND DateTo >= '2019-01-27';

上面的查询返回此结果,

id  name                DateFrom    DateTo
1   Some other event    2018-12-12  2018-12-31
2   Music Event A       2019-01-24  2019-01-29
3   Music eventB        2019-01-25  2019-01-30
4   Event C             2019-02-01  2019-02-09

希望它能回答您的问题!