список дат в PostgreSQL

Программирование БД postgresql Базы данных

Как вывести список всех дат 'YYYY-MM-DD' в колонку за указанный 'YYYY-MM'.

Т.е. например за '2009-08' хочу получить результат:
2009-08-01
2009-08-02
2009-08-03
............
2009-08-31


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

Примечание:
у меня несколько таблиц.. в одной например есть что просуммировать за 3, 7 и 15 число

а в другой за 4, 7 и 21-е

соответственно если сгруппировать по дате по одной из таблиц - другая "опросится" неполностью...

а в идеале бы вывести все даты - где ничего нет - там ноли
Ответы:
Я обычно делаю группировку. Например, таблица содержит колонки "сумма" и "датовремя взноса". Чтобы узнать посуточные результаты, можно сделать так:
Тогда отвечаю непосредственно на первоначально поставленный вопрос:
ЭЭээ... Решения для MSSQL , думаю ,что можно чуть переделать и пойдёт для Postgres
select dateadd(dd,'2009-01-01',t3.c)
from
(
select
t1.c*10 + t2 as c
from
Использовать функцию, которая вернет SETOF date
Внутри перебрать все даты указанного месяца и вернуть их. Получится что-то такое:
CREATE OR REPLACE FUNCTION MonthDates(start_dt date) RETURNS SETOF date AS
$$
DECLARE
dt date;
month integer;
BEGIN
dt = date_trunc('month', start_dt::timestamp);
month = date_part('month', dt::timestamp);
LOOP
RETURN NEXT dt;
dt=dt+1;
--RAISE NOTICE 'Date: %', dt;
EXIT WHEN date_part('month', dt)<>month;
END LOOP;
RETURN;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
Делается одним запросом
Вместо CAST('02.05.2009' AS DATE) подставьте любую дату интересующего месяца
Лично мне это решение понравилось больше всего


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.