powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
18 сообщений из 18, страница 1 из 1
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556474
mister_psql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хранить в базе дату время записывая таймзону в котором дата время находится.
К примеру: 21.11.2017 11:00 UTC+3, 21.11.2017 16:00 UTC+6
Можно ли в PSQL хранить это один полем? 2014-11-10 03:13:14 UTC+5?
Я создал уже таблицу в которую инсертил такие данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE tz (
  "timestamp" timestamp with time zone
 );

INSERT INTO tz ("timestamp") VALUES 
('2014-10-10 12:13:14 UTC+3'), 
('2014-10-10 12:13:14 UTC+4'), 
('2014-10-10 12:13:14 UTC+5');



Вот что выводит:
Код: plsql
1.
2.
3.
4.
5.
6.
zonetest=# select * from tz;   
       timestamp               
------------------------       
 2014-10-10 15:13:14+00
 2014-10-10 16:13:14+00
 2014-10-10 17:13:14+00


То что он так записывает в базу данных является нормальных явлением?
Если да, то каким образом сохранять таймзону которая приходит? Создать отдельное поле с таймзоной?
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556478
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mister_psqlХранить в базе дату время записывая таймзону в котором дата время находится.
К примеру: 21.11.2017 11:00 UTC+3, 21.11.2017 16:00 UTC+6
Можно ли в PSQL хранить это один полем? 2014-11-10 03:13:14 UTC+5?
Я создал уже таблицу в которую инсертил такие данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE tz (
  "timestamp" timestamp with time zone
 );

INSERT INTO tz ("timestamp") VALUES 
('2014-10-10 12:13:14 UTC+3'), 
('2014-10-10 12:13:14 UTC+4'), 
('2014-10-10 12:13:14 UTC+5');



Вот что выводит:
Код: plsql
1.
2.
3.
4.
5.
6.
zonetest=# select * from tz;   
       timestamp               
------------------------       
 2014-10-10 15:13:14+00
 2014-10-10 16:13:14+00
 2014-10-10 17:13:14+00


То что он так записывает в базу данных является нормальных явлением?
Если да, то каким образом сохранять таймзону которая приходит? Создать отдельное поле с таймзоной?

Да, но зачем вам timezone то вообще нужна как независимая информация? Какую задачу вы этим пытаетесь решать?
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556481
mister_psql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Bogukmister_psqlХранить в базе дату время записывая таймзону в котором дата время находится.
К примеру: 21.11.2017 11:00 UTC+3, 21.11.2017 16:00 UTC+6
Можно ли в PSQL хранить это один полем? 2014-11-10 03:13:14 UTC+5?
Я создал уже таблицу в которую инсертил такие данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE tz (
  "timestamp" timestamp with time zone
 );

INSERT INTO tz ("timestamp") VALUES 
('2014-10-10 12:13:14 UTC+3'), 
('2014-10-10 12:13:14 UTC+4'), 
('2014-10-10 12:13:14 UTC+5');



Вот что выводит:
Код: plsql
1.
2.
3.
4.
5.
6.
zonetest=# select * from tz;   
       timestamp               
------------------------       
 2014-10-10 15:13:14+00
 2014-10-10 16:13:14+00
 2014-10-10 17:13:14+00


То что он так записывает в базу данных является нормальных явлением?
Если да, то каким образом сохранять таймзону которая приходит? Создать отдельное поле с таймзоной?

Да, но зачем вам timezone то вообще нужна как независимая информация? Какую задачу вы этим пытаетесь решать?

У нас в проекте есть мероприятия, время и дату которого нужно сохранять учитывая часовой пояс места проведения мероприятия.
А для людей которые живут в других уголках нашей страны, нужно выводить время учитывая их таймзону.
Т.е если мероприятие проходит в Красноярске, то мне нужно запомнить в базе его время и таймзону места проведения, а для человека, проживающего в Москве показать время проведения по Москве и время по Красноярску
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556483
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mister_psqlMaxim Bogukпропущено...


Да, но зачем вам timezone то вообще нужна как независимая информация? Какую задачу вы этим пытаетесь решать?

У нас в проекте есть мероприятия, время и дату которого нужно сохранять учитывая часовой пояс места проведения мероприятия.
А для людей которые живут в других уголках нашей страны, нужно выводить время учитывая их таймзону.
Т.е если мероприятие проходит в Красноярске, то мне нужно запомнить в базе его время и таймзону места проведения, а для человека, проживающего в Москве показать время проведения по Москве и время по Красноярску

Да тогда надо отдельно сохранять еще и локальную timezone. Валидный пример.
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556488
mister_psql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Спасибо!)
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556593
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mister_psql,
Код: sql
1.
2.
3.
4.
SELECT 
  now() AT TIME ZONE 'Europe/Moscow' AS moscow,
  now() AT TIME ZONE 'Europe/Berlin' AS berlin,
  now() AT TIME ZONE 'Europe/London' AS london;



если меняется установки подключения клиента, то можно делать
Код: sql
1.
2.
SET TIMEZONE TO 'Europe/Oslo';
SELECT now();



в общем, не надо хранить зону отдельно. надо хранить время с зоной.
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556617
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsycho,

Увы, иногда надо хранить зону (для событий в будущем) или даже просто координаты точки (на случай если правительство решит изменить деление на зоны или правила перехода на летнее время).
Но все такие случаи надо рассматривать индивидуально, это не является общим правилом .

Хорошая статья на тему: https://habrahabr.ru/company/mailru/blog/242645/
Рекомендация “хранить в UTC” == использовать `timestamptz` в PostgreSQL.
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556627
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

странно, работаем с клиентами в разных часовых поясах. ещё не напоролись. храним в timestamptz. ушёл читать...
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556805
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsychomister_psql,
Код: sql
1.
2.
3.
4.
SELECT 
  now() AT TIME ZONE 'Europe/Moscow' AS moscow,
  now() AT TIME ZONE 'Europe/Berlin' AS berlin,
  now() AT TIME ZONE 'Europe/London' AS london;



если меняется установки подключения клиента, то можно делать
Код: sql
1.
2.
SET TIMEZONE TO 'Europe/Oslo';
SELECT now();



в общем, не надо хранить зону отдельно. надо хранить время с зоной.

И как вы решите тогда задачу
"
Т.е если мероприятие проходит в Красноярске, то мне нужно запомнить в базе его время и таймзону места проведения, а для человека, проживающего в Москве показать время проведения по Москве и время по Красноярску
"
?
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556810
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mister_psqlMaxim Boguk,
Спасибо!)

Кстати да очень правильное замечание было на счет того что надо не +3 хранить а 'Europe/Moscow' иначе в местах где есть летнее и зимнее время - получите неожиданные результаты для отображения локального времени события.

;)
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39556834
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukИ как вы решите тогда задачу
"
Т.е если мероприятие проходит в Красноярске, то мне нужно запомнить в базе его время и таймзону места проведения, а для человека, проживающего в Москве показать время проведения по Москве и время по Красноярску
"
?

походу никак. пока-что такого варианта у нас нету. юзер видит время в его тайм зоне, поскольку он не мобильный, проблем не возникало. а так, да, если надо показывать время евента и по времени юзера и по времени евента, придётся хранить зону евента.
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39557211
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время интересовало для Java.... ничего лучше не придумал, чем отправить в топку даты в базе и хранить в виде текстовой строки

p.s. нужно было хранить время вылета/прилета с учетом таймзоны аэропорта. Хотя информацию о таймзоне можно было на аэропорт повесить, решил, что лучше/правильнее всегда информацию о таймзоне с датой таскать. Поскольку поиска по информации в БД не было (поиск только в среднем слое), то текст строка меня полностью устроила
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561784
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даты хранить надо в UTC
а отображать в таймзоне юзера
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561887
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovдаты хранить надо в UTC
а отображать в таймзоне юзера

еще один не прочитал тред и вопрос... :(
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561910
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukbochkovдаты хранить надо в UTC
а отображать в таймзоне юзера

еще один не прочитал тред и вопрос... :(
кхм. спорное утверждение.

вопрос ТС совершенно безграмотный.

ваше сюсюканье с тс совершенно антипродуктивно с т.з. рассеяния непонимания ТС-а способа хранения пыжом таймстампа "визтаймзон"

достаточно заострить внимание на том, что никаких "таймстапвизтаймзон" пж не хранит. ибо не умеет.
он умеет хранить таймстампы. и только. (в обоих случаях -- и с тайм,якобы,зоной и без якобы нее).

причем в одном случае он считает, что данное лежит в УТС, и предоставляет "интерфейсные услуги" -- форматируя строку отдачи данного в таймзону клиента (сеанса).

таким образом, если нам нужна таймзона клиента в данных -- нам надо ее хранить отдельно (т.к. внутри таймстампа она не хранится). в частности можно хранить географическую привязку, саму таймзону в строковом поле, и т.п..
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561919
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Тут вопрос в том, почему Postgres так себя ведёт. И тут уже надо лезть в стандарт SQL и искать причины там…
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561924
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovqwwq,

Тут вопрос в том, почему Postgres так себя ведёт. И тут уже надо лезть в стандарт SQL и искать причины там…
думаю тут нет вопроса о поведении.
оно видимо вполне законное.
вопрос о неудачных названиях типов -- видимо упирается в стандарты.

мне как--то требовалось иметь systime в типе timestamp , так как-то было не очевидно, откуда брать зону сервера в сеансе, потенциально клиентском.
...
Рейтинг: 0 / 0
Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
    #39561929
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukbochkovдаты хранить надо в UTC
а отображать в таймзоне юзера

еще один не прочитал тред и вопрос... :(
ну и таймзону события отдельно
хранить
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли поставить разные таймзоны в типе datetime with timezone postgresql?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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