Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Фильтр на timestamptz / 2 сообщений из 2, страница 1 из 1
14.05.2014, 00:21:52
    #38640425
aleksandy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на timestamptz
Имеется таблица, содержащая столбец типа timestamptz. В неё для каждой из групп пишутся данные со своей TimeZone. В пределах одной группы, одна TimeZone.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select t.*
  from (
    select 1000, '2014-05-01 20:00:00'::timestamp at time zone 'Europe/Moscow' union all 
    select 1000, '2014-05-01 21:00:00'::timestamp at time zone 'Europe/Moscow' union all 
    select 1000, '2014-05-01 22:00:00'::timestamp at time zone 'Europe/Moscow' union all 
    select 1000, '2014-05-01 23:00:00'::timestamp at time zone 'Europe/Moscow' union all 
    select 2000, '2014-05-01 20:00:00'::timestamp at time zone 'Asia/Omsk' union all 
    select 2000, '2014-05-01 21:00:00'::timestamp at time zone 'Asia/Omsk' union all 
    select 2000, '2014-05-01 22:00:00'::timestamp at time zone 'Asia/Omsk' union all 
    select 2000, '2014-05-01 23:00:00'::timestamp at time zone 'Asia/Omsk'
  ) t (groups_id, tstamp);



Задача: выбрать все строки для 1000 группы за 2014-05-01 (это значение приходит параметром), т.е. хочу получить вот такой результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
groups_id | tstamp
---------------------------------------
     1000 | "2014-05-01 23:00:00+07"
     1000 | "2014-05-02 00:00:00+07"
     1000 | "2014-05-02 01:00:00+07"
     1000 | "2014-05-02 02:00:00+07"

Пробую добавить такое условие, но выборка пустая, т.к. таймзона машины, на которой установлен сервер, отличается от таймзоны группы.
Код: sql
1.
2.
3.
  where t.groups_id = 1000
    and date_trunc('day', t.tstamp) = '2014-05-01 00:00:00'::timestamp at time zone 'Europe/Moscow'
  ;



Возможно ли задать как-то задать date_trunc() таймзону, в которой следует делать округление? Или как вообще решать подобные задачи.
...
Рейтинг: 0 / 0
14.05.2014, 06:40:15
    #38640475
aleksandy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр на timestamptz
Избавился от округления даты до дня, заменив на обыкновенное неравенство, и всё полетело.

Код: sql
1.
2.
and t.tstamp >= '2014-05-01 00:00:00'::timestamp at time zone 'Europe/Moscow'
and t.tstamp < ('2014-05-01 00:00:00'::timestamp at time zone 'Europe/Moscow') + '1 day'::interval
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Фильтр на timestamptz / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]