Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PostgreSQL] Работа с датами 
:(
    Опции темы
m0zg
Дата 27.6.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: нет
Всего: 2



Допустим, есть таблица, в которой есть поля start и end. В одном поле дата начала периода в формате date, в другом дата окончания. Можно вывести список месяцев между началом и концом периода? Год может быть разным (т.е. результат выборки месяцев может быть таким: 8, 9, 10, 11, 12, 1, 2 и т.д..).
PM MAIL   Вверх
Magnifico
Дата 27.6.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 4
Всего: 17



только если в пределах года ( в другом случае делать процедуру  с циклами : вычислять раницу , сохранять  во времнную таблицу...)
задача не элементарная простым селектом никак.

Код

create temporary table t1
(
startDate date,
endDate date
)
---------------------
create temporary table t2
(i serial)
---------------------
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
insert into t2 default values;
--------------------------------
insert into t1
select '01/01/2007','01/05/2007'

---------------------------------
select t2.i from
(
select  Extract(Month from startDate)::int as startMonth  , Extract(Year from startDate)::int as startYear ,
Extract(Month from endDate)::int  as endMonth, Extract(Year from startDate)::int as endYear
from t1 as t1
) as q

inner join t2 as t2
on q.startMonth <= t2.i
where t2.i between q.startMonth and q.endMonth
order by q.startYear





--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
Value
Дата 28.11.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 2.12.2005

Репутация: нет
Всего: нет



Вопрос по этой же теме 

У меня пявилась проблемка, надеюсь вы поможите её решить :
Имеется таблица

Код

create table order_info (
order_id integer not null references orders(id),
billboard_id integer not null references billboards(id),
time_interval t_days_arr,
production boolean not null
);



н ней как вы видите есть поле time_interval с типом t_days_arr

Код

create domain t_days_arr as char(8)[]



мне нужно чтобы в этом поле находился массив дней к примеру от 2008-11-10 и до 2008-12-22(в принципе формат можно изменить на 8-и значный (не YYYY-MM-DD, a YYYYMMDD)
как правильно написать функцию чтобы заполнить эту строку ?

Это сообщение отредактировал(а) Value - 28.11.2008, 17:08
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.