Ошибка сохранения часового пояса в Postgresql
Пытаясь сохранить дату в PostgreSQL, используя Python, он дает мне UTC + 2 для моего часового пояса, в то время как это UTC + 1 (не обращайте внимания на разницу, я просто использовал тест Python, чтобы узнать, каков часовой пояс)
In [8]: datetime.datetime.now(pytz.timezone("Africa/Algiers"))
Out[8]: datetime.datetime(2018, 7, 7, 15, 27, 43, 756977, tzinfo=<DstTzInfo 'Africa/Algiers' CET+1:00:00 STD>)
На PostgreSQL я получаю
2018-07-07 14:28:04.144505+02
Это как postgresql добавляет летнее время, а у нас его нет в Алжире?
NB: я использую asyncpg
1 ответ
Основываясь на ответе Раймонда Нейланда, который сработал, вот как (из PGAdmin 4). Причина в том, что ОС вынуждает свой собственный часовой пояс и не сохраняет тот, который дал ему Python.
Просто запустите эти три команды из командной строки SQL:
Чтобы узнать, какой часовой пояс использует PG,
SHOW timezone ;
Чтобы получить все доступные часовые пояса и как PG называет их
SELECT * FROM pg_timezone_names ;
Поставить правильный часовой пояс
ALTER DATABASE yourDataBase SET timezone TO 'Africa/Algiers';
Перезапустите сервис
sudo systemctl restart postgresql-10.service
NB: даже если вы используете moment.js
вам нужно добавить .zone(+0100)
как упомянуто здесь