从日期范围生成天数

从日期范围生成天数

我想运行这样的查询

select ... as days where `date` is between '2010-01-20' and '2010-01-24'

并返回如下数据:

days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24


繁花不似锦
浏览 672回答 4
4回答

精慕HU

下面是使用视图的另一个变体:CREATE VIEW digits AS   SELECT 0 AS digit UNION ALL   SELECT 1 UNION ALL   SELECT 2 UNION ALL   SELECT 3 UNION ALL   SELECT 4 UNION ALL   SELECT 5 UNION ALL   SELECT 6 UNION ALL   SELECT 7 UNION ALL   SELECT 8 UNION ALL   SELECT 9;CREATE VIEW numbers AS   SELECT     ones.digit + tens.digit * 10 + hundreds.digit * 100 + thousands.digit * 1000 AS number  FROM     digits as ones,     digits as tens,     digits as hundreds,     digits as thousands;CREATE VIEW dates AS   SELECT     SUBDATE(CURRENT_DATE(), number) AS date  FROM     numbers;然后你可以简单地做(看看它有多优雅?):SELECT   dateFROM   datesWHERE   date BETWEEN '2010-01-20' AND '2010-01-24'ORDER BY   date更新值得注意的是,您只能生成从当前日期开始的过去日期..如果要生成任何类型的日期范围(过去、未来和两者之间),则必须使用此视图:CREATE VIEW dates AS   SELECT     SUBDATE(CURRENT_DATE(), number) AS date  FROM     numbers  UNION ALL   SELECT     ADDDATE(CURRENT_DATE(), number + 1) AS date  FROM     numbers;
打开App,查看更多内容
随时随地看视频慕课网APP