powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Фильтр на timestamptz
2 сообщений из 2, страница 1 из 1
Фильтр на timestamptz
    #38640425
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица, содержащая столбец типа 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
Фильтр на timestamptz
    #38640475
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Избавился от округления даты до дня, заменив на обыкновенное неравенство, и всё полетело.

Код: 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
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Фильтр на timestamptz
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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