Диапазон дат в PostgreSQL - PullRequest
       4

Диапазон дат в PostgreSQL

14 голосов
/ 20 декабря 2010

Когда я применяю диапазон дат к своему запросу, есть ли способ отобразить даты, используемые в этом диапазоне, даже если в эти даты нет данных?

Предположим, я использую,

... where date between '1/12/2010' and '31/12/2010' order by date

В моем результате я хочу показать столбец суммы всех сумм до 12 января 2010 года, даже если для этой даты нет данных, а также для 31.12.2010.

1 Ответ

26 голосов
/ 20 декабря 2010

Присоединитесь к generate_series () , чтобы заполнить пробелы.

Пример:

CREATE TEMP TABLE foo AS SELECT CURRENT_DATE AS today;
SELECT
    COUNT(foo.*),
    generate_series::date
FROM
    foo
        RIGHT JOIN generate_series('2010-12-18', '2010-12-25', interval '1 day') ON generate_series = today
GROUP BY
    generate_series;

Результат:

0,'2010-12-18'
0,'2010-12-19'
1,'2010-12-20'
0,'2010-12-21'
0,'2010-12-22'
0,'2010-12-23'
0,'2010-12-24'
0,'2010-12-25'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...