Как бороться с TIMEZONE в PostgreSQL timestamptz - PullRequest
0 голосов
/ 23 марта 2020

У меня есть Users таблица с birthdate столбцом типа timestamptz.
TIMEZONE в PostgreSQL установлена ​​на UTC.
Я устанавливаю birthdate следующим образом в код (. NET Core):

user.birthDate = DateTime.UtcNow;

Что произойдет, если я установлю TIMEZONE на America\Los Angeles и сохраню свою дату (UT C представление из. NET кода)? Мое представление UTC будет рассматриваться как America\Los Angeles, и это приведет к неверному представлению данных?

Должен ли я всегда сохранять TIMEZONE установленным на UTC? Это лучшая практика для timestamptz?

1 Ответ

1 голос
/ 23 марта 2020

https://www.postgresql.org/docs/12/datatype-datetime.html#DATATYPE -TIMEZONES говорит

Все даты и время с учетом часового пояса хранятся внутри UT C. Они преобразуются в местное время в зоне, указанной параметром конфигурации TimeZone, перед их отображением для клиента.

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

Лучше всего использовать метку времени с часовым поясом вместо метки времени без часового пояса: см. https://tapoueh.org/blog/2018/04/postgresql-data-types-date-timestamp-and-time-zones/#date - время и часовые пояса введите описание ссылки здесь

...