我正在尝试列出给定日期下一周的所有日子
例子:
如果今天是2019-09-24
那么结果应该是:
DAY_OF_WEEK
2019-09-24
2019-09-25
2019-09-26
2019-09-27
2019-09-28
2019-09-29
2019-09-30
这是我想出的查询,我想知道是否有更优雅的方法来实现相同的结果:
SELECT date('now') AS DAY_OF_WEEK
UNION
SELECT date('now', '+1 day') AS DAY_OF_WEEK
UNION
SELECT date('now', '+2 day') AS DAY_OF_WEEK
UNION
SELECT date('now', '+3 day') AS DAY_OF_WEEK
UNION
SELECT date('now', '+4 day') AS DAY_OF_WEEK
UNION
SELECT date('now', '+5 day') AS DAY_OF_WEEK
UNION
SELECT date('now', '+6 day') AS DAY_OF_WEEK
你的代码是正确的。
如果需要,您可以使用 aCTE
只返回0
to的数字,6
并从中选择要添加到当前日期的天数:
WITH days as (
SELECT 0 AS day UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
)
SELECT date('now', '+' || day || ' day') AS DAY_OF_WEEK FROM days
请参阅演示。
或者用一个RECURSIVE CTE
:
WITH RECURSIVE days(day) AS (
SELECT 0
UNION ALL
SELECT day + 1 FROM days
LIMIT 7
)
SELECT date('now', '+' || day || ' day') AS DAY_OF_WEEK FROM days;
请参阅演示。
结果:
| DAY_OF_WEEK |
| ----------- |
| 2019-09-24 |
| 2019-09-25 |
| 2019-09-26 |
| 2019-09-27 |
| 2019-09-28 |
| 2019-09-29 |
| 2019-09-30 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句