在 Postgresql 中保存时区时出错
Error in saving timezone in Postgresql
尝试使用 Python 在 PostgreSQL 中保存日期,它为我的时区提供了 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 添加了夏令时,而我们在阿尔及利亚没有夏令时?
注意:我使用 asyncpg
基于 Raymond Nijland 的 ,这是有效的,方法如下(来自 PGAdmin 4)
原因是 OS 强制使用自己的时区并且不保存 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
注意:即使您使用 moment.js
,您也需要添加 .zone(+0100)
,如前所述 here
尝试使用 Python 在 PostgreSQL 中保存日期,它为我的时区提供了 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 添加了夏令时,而我们在阿尔及利亚没有夏令时?
注意:我使用 asyncpg
基于 Raymond Nijland 的
只需 运行 来自 SQL 提示符的那三个命令:
要获取 PG 使用的时区,
SHOW timezone ;
获取所有可用时区以及 PG 如何命名它们
SELECT * FROM pg_timezone_names ;
输入正确的时区
ALTER DATABASE yourDataBase SET timezone TO 'Africa/Algiers';
重启服务
sudo systemctl restart postgresql-10.service
注意:即使您使用 moment.js
,您也需要添加 .zone(+0100)
,如前所述 here