【问题标题】:Handling Timezone using Mysql使用 Mysql 处理时区
【发布时间】:2015-08-31 21:46:49
【问题描述】:

我知道这个问题已经被问过很多次了。我只是想知道 MYSQL 的时间戳在我的用例中如何处理它。

我有一个应用程序,可以将试卷分配给多个用户(属于不同国家/地区)。试卷包含开始和结束时间。我想知道我是否将试卷的开始时间设置为上午 10 点。那么这是否意味着每个用户根据他们的当地时间上午 10 点(适用不同的时区)。

所以对于居住在美国、加拿大等地的人来说,开始时间是当地上午 10 点。

它如何检测用户的时区?从用户的登录位置?

【问题讨论】:

    标签: mysql sql timezone


    【解决方案1】:

    来自the MySQL documentation

    MySQL 将TIMESTAMP 值从当前时区转换为 UTC 进行存储,然后从 UTC 转换回当前时区进行检索。 ...默认情况下,每个连接的当前时区是服务器的时间。时区可以在每个连接的基础上设置。

    还有here:

    每个连接的时区。每个连接的客户端都有自己的时区设置,由会话 time_zone 变量给出。最初,会话变量从全局 time_zone 变量中获取其值,但客户端可以使用以下语句更改自己的时区:

    mysql> SET time_zone = timezone;
    

    【讨论】:

    • 感谢您的回答。我很困惑。我虽然时间戳会自动检测登录的用户时区并根据他/她的时区存储/检索。您提到“客户端可以更改自己的时区”。这是什么意思?为什么客户端会更改时区设置?客户端不应该有权访问数据库服务器。只有数据库管理员可以访问它。请澄清。
    • MySQL 对您的最终用户一无所知。它只知道谁连接到它。听起来您有一个连接到它的 Web 服务器。 Web 服务器将是 MySQL 的“客户端”。
    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 2016-10-17
    • 2014-06-13
    • 1970-01-01
    • 2013-06-30
    • 2014-06-02
    • 2015-03-29
    • 2013-08-15
    相关资源
    最近更新 更多