下面是使用視圖的另一個變體:
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;