【问题标题】:Is it bad practice to set a specific timezone for a PostgreSQL database?为 PostgreSQL 数据库设置特定时区是不好的做法吗?
【发布时间】:2019-11-09 12:45:39
【问题描述】:

我正在将一个 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) 上看到了这个注释,这似乎是一种不好的做法。

为数据库设置时区真的是个坏习惯吗?

完整地说,这个网络应用程序是特定于国家的,它不使用其他时区的日期/时间。

非常感谢您的提示!

【问题讨论】:

    标签: postgresql timezone


    【解决方案1】:

    我不同意 Heroku 的观点。

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

    我认为有两种不错的架构:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 2020-11-28
      • 1970-01-01
      • 2020-05-07
      • 2011-03-24
      • 2017-02-04
      • 2017-03-05
      相关资源
      最近更新 更多