我有多个平均数据库。
StartDate EndDate
-----------------------------
2017-03-18 2017-03-20
2017-10-10 2017-10-10
2017-11-30 2017-12-01
我需要的是获取看起来像的使用日期列表:
2017-03-18
2017-03-19
2017-03-20
2017-10-10
2017-11-30
2017-12-01
这些事件可能非常多,而且可能会重叠,因此查询必须非常快,并且记录按日期分组。如果选择未使用的天数会更快,那就无所谓了。我只需要找出当年的哪些日子被使用。
答案 0 :(得分:1)
最简单的方法是让自己成为dates
表,每天都有一行。
然后你可以这样做
SELECT DISTINCT d.day
FROM dates d
JOIN mytable t ON d.day >= t.StartDate AND d.day <= t.EndDate
ORDER BY d.day
并获取所有日期的枚举,以满足您的需求。
有很多方法可以动态生成dates
表,但它们是一个臭名昭着的痛苦。你可能想要查找那种东西。
(无耻的自我宣传......这是一种可行的方式。https://www.plumislandmedia.net/mysql/filling-missing-data-sequences-cardinal-integers/)