我需要按特定月份查询MS SQL事件表。
在这种情况下,我想返回2020年5月发生的所有事件。
ID | BAND | TOUR | LOCATION | START_DTTM | END_DTTM
1 | Showaddywaddy | 1 | London | 2020-04-01 00:00.00 | 2020-06-01 00:00.00
2 | Showaddywaddy | 1 | Manchester | 2020-06-03 00:00.00 | 2020-10-04 00:00.00
3 | Showaddywaddy | 1 | Birmingham | 2020-11-02 00:00.00 | 2020-12-21 00:00.00
4 | Showaddywaddy | 2 | Munich | 2021-02-27 00:00.00 | 2021-03-04 00:00.00
5 | Showaddywaddy | 2 | Frankfurt | 2021-04-11 00:00.00 | 2021-06-11 00:00.00
6 | Brian Adams | 1 | Tokyo | 2020-05-16 00:00.00 | 2020-08-29 00:00.00
7 | Brian Adams | 1 | Osaka | 2020-10-07 00:00.00 | 2020-12-25 00:00.00
8 | Shabba Ranks | 1 | New York | 2020-01-13 00:00.00 | 2020-03-22 00:00.00
9 | Shabba Ranks | 1 | Chicago | 2020-04-20 00:00.00 | 2020-05-09 00:00.00
我希望返回ID的1、6和9。
我发现此查询非常棘手,因此在此先感谢您的帮助。
答案 0 :(得分:1)
如果您希望与月份重叠,则:
select e.*
from events e
where e.start_dttm < '2020-06-01' and
e.end_dttm >= '2020-05-01'
如果事件在6月之前开始并在4月之后开始,则事件至少在2020年5月发生。
尽管您不是在问,但是如果您想完成 重叠,则逻辑将非常相似:
select e.*
from events e
where e.start_dttm <= '2020-05-01' and
e.end_dttm >= '2020-06-01'
答案 1 :(得分:1)
SELECT *
FROM events
WHERE START_DTTM <= '2020-06-01'
AND END_DTTM>='2020-05-01'
此article解释了为什么您只能使用2个条件来查找重叠