0

我有一个带有表的 Mysql DB,我必须管理表中的时区。

global.time_zone 和 session.time_zone 是 UTC。

我将举一个我想设置一些条件的表的简短示例。

我有 5 个不同的“IP”:

例如:

  1. '1.1.1.1.1'

  2. '1.1.1.1.2'

  3. '1.1.1.1.3'

  4. '1.1.1.1.4'

  5. '1.1.1.1.5'

我有一列“updated_at”(日期时间)

现在,我想满足以下条件:

  1. IP 1 = 格林威治标准时间
  2. IP 2 = GMT+1
  3. IP 3 = GMT+2
  4. IP 4 = GMT+3
  5. IP 5 = GMT+4

因此,根据表上的“IP”,我将在“updated_at”上获得相关时区。

  1. 我应该只为前面操纵时间,还是有办法在发送查询之前转换表上的 TZ?这里最好的解决方案是什么?

  2. 未来如何处理 DST 开/关?

前端是 React.js,后端是 Node.js。

谢谢!

4

1 回答 1

0

存储时间和日期数据取决于您在检索、操作和显示方面需要对其进行的操作。

它代表过去(即日志)还是未来(即约会)?

过去很容易发生,您可能知道何时何地。但未来,DST 可能会影响它。

在你的情况下,它看起来像一个显示问题,那么你可以选择谁来支付 CPU 账单,你的公司或用户。

因此,您可以使用 CONVERT_TZ() 来检索它并保存在 UTC'0 中。我建议您使用此规则创建一个视图。(也许新队友不知道这种转换)。在这种情况下,处理成本是你的。另一方面,您可以将其传输给用户,并在客户端调整 UTC'0 -> IP。

有些情况会变得混乱,例如,当您有一个向用户显示来自不同时区的数据的日志时。或者当您想向该用户发送电子邮件时。在这种情况下,您还必须存储用户时区。

我会推荐这个视频

于 2019-09-22T02:01:21.733 回答