有人知道MySQL中有没有这样的函数吗?

更新

这不会输出任何有效的信息:

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

或者MySQL本身不能确切地知道所使用的time_zone,这很好,我们可以在这里涉及PHP,只要我能得到有效的信息,而不是像SYSTEM…


当前回答

你可以尝试以下方法:

select sec_to_time(TIME_TO_SEC( curtime()) + 48000);

在这里,您可以将时差指定为秒

其他回答

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).

要获取mysql的当前时区,你可以做以下事情:

 SELECT @@system_time_zone;   # from this you can get the system timezone 
 SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone) # This will give you time zone if system timezone is different from global timezone

现在如果你想改变mysql时区,那么:

 SET GLOBAL time_zone = '+00:00';   # this will set mysql timezone in UTC
 SET @@session.time_zone = "+00:00";  # by this you can chnage the timezone only for your particular session 

你只需要在修改系统时区后重新启动mysqld ..

MySQL的Global timezone取System的timezone。当你改变任何这样的系统属性,你只需要重新启动Mysqld。

要根据您的时区获取当前时间,您可以使用以下命令(在我的示例中是'+5:30')

选择DATE_FORMAT (convert_tz(现在(),@@session.time_zone, ' + 05:30 '), Y % - % - % d ')

描述中提到的命令返回“SYSTEM”,表示它采用服务器的时区。这对我们的查询没有用处。

下面的查询将有助于了解时区

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;

以上查询将提供与协调世界时(UTC)相关的时间间隔。所以你可以很容易地分析时区。如果数据库时区是IST,则输出将是5:30

UTC_TIMESTAMP

在MySQL中,UTC_TIMESTAMP返回当前UTC日期和时间,作为'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS的值。Uuuuuu格式取决于函数的用法,即在字符串或数字上下文中。

现在()

现在()函数。MySQL NOW()以'YYYY-MM-DD HH:MM:SS'格式或YYYYMMDDHHMMSS返回当前日期和时间的值。Uuuuuu格式,取决于函数的上下文(数字或字符串)。CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()是NOW()的同义词。