Список всех дней недели в запросе - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь перечислить все дни следующей недели данной даты

Пример:

Если сегодня 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

1 Ответ

1 голос
/ 24 сентября 2019

Ваш код правильный.Если вы хотите, вы можете использовать CTE, который возвращает только числа от 0 до 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  |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...