我有一个用户可以发表评论的论坛。创建注释时,其对应的日期时间值以UTC格式存储。
我打算在当地时间提供数据,比如'ASIA / SINGAPORE';
2个选项:
convert_tz
。我不喜欢
方法,因为它使我每次查询都重写select_expr
。SET time_zone = 'ASIA/SINGAPORE';
至于第二个选项,我想知道命令的有效范围是什么(这里没有超级特权)。更具体地说,如果我正在使用php应用程序,配置是否因为我关闭数据库连接而无效?我应该每次查询数据库时发出命令吗?
TNX。
答案 0 :(得分:3)
MySQL变量的作用域在连接中(最低级别,在libmysql< - > mysqld之间)。这意味着,如果PHP本身或某些应用程序库使用任何类型的mysql连接池,那么你可以观察到这个变量消失(因为不可见的连接切换),并且变量肯定会在断开连接后消失。
如果您不满意重写您的查询,您可能可以动态选择合适的tz名称 - 例如,形成一个用户表,只要您拥有已登录用户的ID,如下所示:
SELECT convert_tz( ..., ..., (select user_tz from users where user_id = ...))