为PostgreSQL数据库设置特定时区是不好的做法吗?

时间:2019-11-09 12:45:39

标签: postgresql timezone

我正在将一个Web应用程序(PHP 7.3 / PostgreSQL 11)移动到新服务器上。

除了一点以外没有什么特别的:时区差异

  • 旧服务器时间固定在我们的时区(欧洲/布鲁塞尔)
  • 新服务器时间以UTC固定

我没有特权在新服务器上更改该设置。

由于许多表使用NOW()作为许多“没有时区的时间戳”字段的默认值,并且许多查询也使用NOW()或CURRENT_TIME,所以我想更改数据库的默认时区。

我当时在考虑通过执行ALTER database my_db SET timezone ='Europe/Brussels'来设置数据库的默认时区,但是我在Heroku(https://help.heroku.com/XKRPVR53/how-to-change-timezone-for-postgres)上看到了此注释,这似乎是一种不好的做法。

设置数据库的时区真的不是一个好习惯吗?

为完整起见,此Web应用程序是特定于国家/地区的,它不使用其他时区的日期/时间。

在此先感谢您的提示!

1 个答案:

答案 0 :(得分:2)

我不同意Heroku。

使用PostgreSQL管理时区非常好。您只需记住timezone client 时区。设置默认值没有错,但是每个会话都应该正确设置参数。

我认为有两种好的架构:

  • 管理数据库中的时区,并始终使用timestamp with time zone

  • 在应用程序中管理时区,并始终使用timestamp without time zone

混合这些策略通常会导致问题。