📅  最后修改于: 2023-12-03 14:44:30.803000             🧑  作者: Mango
在许多情况下,需要使用统一的时间标准。UTC(Coordinated Universal Time,协调世界时)是这样一个时间标准,它使用24小时制,并与格林威治标准时间相同。当涉及到跨时区操作时,将时间转换为UTC时间可能非常有用。在MySQL中,使用几个函数可以实现这个目标。
MySQL中的NOW()函数返回当前的日期和时间。使用它可以获得当前时间的UTC时间。
SELECT NOW();
输出:
2021-12-17 08:39:51
MySQL中的CONVERT_TZ()函数将日期时间从一个时区转换到另一个时区。它需要三个参数:要转换的日期时间、要转换的时区和目标时区。
在这里,我们希望将东部时间(EST)转换为UTC时间。EST是美国纽约市和华盛顿特区等城市的当地时间,世界上许多城市使用EST作为它们的标准时间。
SELECT CONVERT_TZ(NOW(), 'America/New_York', 'UTC');
输出:
2021-12-17 13:39:51
注意:需要做两方面的处理。
将MySQL中的时区设置为UTC时区: SET time_zone = 'UTC';
将转换时区的参数设置为符合标准的时区字符串,例如'America/New_York'。
在MySQL中,TIMESTAMP是一个与时区无关的类型,它表示日期和时间,从1970年1月1日00:00:00起过去的秒数,以UTC的格式存储。因此,如果将当前的日期和时间转换为TIMESTAMP类型,它将表示以UTC格式存储的当前日期和时间。
SELECT UNIX_TIMESTAMP(NOW());
输出:
1639715971
FROM_UNIXTIME()函数将UNIX时间戳转换为日期时间格式。我们可以使用这个函数将之前的UNIX时间戳转换回UTC日期时间格式。
SELECT FROM_UNIXTIME(1639715971);
输出:
2021-12-17 08:39:31
结论:
在MySQL中,可以使用多个函数将当前日期时间转换为UTC时间,或将已知时区的日期时间转换为UTC时间。除了在数据库中存储UTC时间之外,将日期时间转换为UTC格式是许多应用程序需要的任务之一。