【问题标题】:MySQL store playlist for different timezonesMySQL 存储不同时区的播放列表
【发布时间】:2012-04-04 07:57:46
【问题描述】:

我需要在数据库中创建一个播放列表,以了解播放器何时播放每个视频。 我会使用这样的东西: table playlist with: id, video_id, play_time,例如如果 play_time 是 2012-04-10 14:00:00,则视频应在 2012-04-10 的 14:00:00 播放,但与用户所在的时区有关。

这个日期时间或时间戳用什么更好?

【问题讨论】:

  • 您最好将所有时间存储为 UTC,然后调整应用程序为用户进行本地 TZ 转换。
  • 为什么使用“更好”的东西很重要?您显然需要来自用户的信息,告诉您他们在哪个时区。如果您使用 datetime 并将其存储为 UTC(欧洲/伦敦),那么您将获得与使用默认为 UTC 的 timestamp 相同的效果。无论发生什么,您都需要用户提供有关其时区的信息,以便计算所需的偏移量。答案是——两者兼而有之。您可以使用这两种类型来存储日期数据。是您的应用程序为您的查询提供需要包含时区偏移的所需日期。

标签: mysql datetime timezone timestamp


【解决方案1】:

来自MySQL manual

MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 存储,并从 UTC 返回到当前时区进行检索。 (这不会发生在其他类型,例如 DATETIME。)默认情况下, 每个连接的当前时区是服务器的时间。这 时区可以在每个连接的基础上设置。只要时间 区域设置保持不变,您将获得与存储相同的值。 如果您存储一个 TIMESTAMP 值,然后更改时区和 检索值,检索到的值与值不同 你存储的。发生这种情况是因为没有使用相同的时区 双向转换。当前时区可用作 time_zone 系统变量的值。有关详细信息,请参阅 第 9.6 节,“MySQL Server Time Zone Support”

所以答案是:时间戳

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 2014-04-13
    • 2022-11-07
    相关资源
    最近更新 更多