MySQL:UTC 到本地时区的自动映射

标签 mysql datetime timezone convert-tz

我有一个论坛,用户可以在其中发表评论。创建评论时,其相应的日期时间值将以 UTC 格式存储。

我打算以本地时间呈现数据,例如“ASIA/SINGAPORE”;

2 个选项:

  1. 每次查询数据库时都使用convert_tz。我不喜欢 方法,因为它让我每次查询时都重写 select_expr
  2. 使用SET time_zone = 'ASIA/SINGAPORE';

对于第二个选项,我想知道该命令的有效范围是多少(这里没有 super 权限)。更具体地说,如果我使用 php 应用程序,当我关闭数据库连接时配置是否无效?我应该在每次查询数据库时发出命令吗?

Tnx。

最佳答案

MySQL 变量的作用域是连接(最低级别,libmysql <-> mysqld 之间)。这意味着,如果PHP本身或某些应用程序库使用任何类型的mysql连接池,那么您可以观察到该变量消失(因为不可见的连接切换),并且该变量在断开连接后肯定会消失。

如果您不乐意重写查询,您可能可以即时选择适当的 tz 名称 - 例如,形成一个用户表,只要您有登录用户的 ID,如下所示:

SELECT convert_tz( ..., ..., (select user_tz from users where user_id = ...))

关于MySQL:UTC 到本地时区的自动映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710647/

相关文章:

php - 将日期插入 PHP 中的隐藏输入表单不起作用

excel - 当没有文件要处理时,如何防止在SSIS包中导入Excel?

parsing - 更改 time.Time 时区而不重新解析

sql - 以 COUNT 为条件的 INSERT

javascript - ExtJS - 使用 RegEx 过滤缓冲存储

python - Django auto_now 和 auto_now_add

java - 格式化日期字符串 Thu, 12 Jun 2014 13 :15:30 GMT

java - 时区是否包含 DST 信息?

php - 从纬度和经度获取 PHP 时区名称?

javascript - 使用 AJAX 时获取数据库的空值