我有一个一年中的时期列表,它们每年都相同。您可以将其视为一个季节。它们有开始日期和结束日期。
因为可能会有相互跳跃的季节,我需要查询所有给定日期的匹配季节,无论是哪一年。
举个例子:
第 1 季:1 月 1 日至 1 月 10 日 第二季:1月6日至1月8日 Season3:1月11日-1月20日
鉴于日期是 1 月 7 日,我需要检索第 1 季和第 2 季。
我试过将所有日期转换为同一年,但当一个季节的开始日期“晚于”结束日期时(例如,有一个从 11 月开始到 2 月结束的时期),它不起作用).
在此先感谢您的帮助。
编辑,示例数据:
StartDate EndDate SeasonId
2000-08-01 2000-08-31 4
2000-12-29 2000-01-02 3
2000-06-01 2000-07-30 3
2000-09-01 2000-09-30 3
2000-01-06 2000-01-08 3
2000-04-07 2000-04-17 3
2000-04-28 2000-05-01 3
2000-06-02 2000-06-05 3
2000-06-23 2000-06-25 3
2000-09-08 2000-09-11 3
2000-09-22 2000-09-25 3
2000-10-12 2000-10-15 3
2000-11-01 2000-11-05 3
2000-12-01 2000-12-10 3
2000-12-22 2000-12-26 3
2000-03-01 2000-05-31 2
2000-10-01 2000-10-31 2
2000-11-01 2000-02-28 1
例如,我需要日期 2000-02-08
的季节,并检索 seasonId = 1
或日期 2000 -10-13
并检索 seasonId = 3, seasonId = 2
最佳答案
我会在 2 个“选项”中执行此操作:(以下 SQL 假设您已经去掉了表中的年份,只留下月-日格式。)
select ... from seasons s where
(s.startDate <= s.endDate and s.startDate <= @mydate and s.endDate >= @mydate) or
(s.startDate > s.endDate and s.startDate >= @mydate and s.endDate <= @mydate)
关于mysql - SQL:查询给定日期的时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784813/