有人知道MySQL中有没有这样的函数吗?
更新
这不会输出任何有效的信息:
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
或者MySQL本身不能确切地知道所使用的time_zone,这很好,我们可以在这里涉及PHP,只要我能得到有效的信息,而不是像SYSTEM…
可能是这样
select timediff(current_time(),utc_time())
通过这种方式,您不会直接获得时区值。
@@global。time_zone不能被使用,因为它是一个变量,它返回的值是'SYSTEM'。
如果您需要使用session SET TIME_ZONE =在更改了时区的会话中使用您的查询,那么您将使用@@session.time_zone获得该查询。如果查询@@global。time_zone,然后你得到'SYSTEM'。
如果使用now()和utc_time()尝试datediff、date_sub或timediff,那么可能会遇到转换问题。
但是上面建议的东西至少可以在某些服务器版本上使用。我的版本是5.5.43-37,是一个托管解决方案。
Use LPAD(TIME_FORMAT(TIMEDIFF(NOW(), UTC_TIMESTAMP),’%H:%i’),6,’+') to get a value in MySQL's timezone format that you can conveniently use with CONVERT_TZ(). Note that the timezone offset you get is only valid at the moment in time where the expression is evaluated since the offset may change over time if you have daylight savings time. Yet the expression is useful together with NOW() to store the offset with the local time, which disambiguates what NOW() yields. (In DST timezones, NOW() jumps back one hour once a year, thus has some duplicate values for distinct points in time).