在mysql数据库中也有时区转换的函数与方法,比如 convert_tz 函数,date_add(),date_sub()以及timestampadd()函数等等。

mysql convert_tz 时区转换查询函数介绍

在 mysql 数据库中可以使用 convert_tz 函数实现时区转换查询。

convert_tz:转换时间的值,由提定的时区转到指定的时间,并返回结果,如无效则返回null

语法:

convert_tz(dt,form_tz,to_tz)

参数:

dt:一个指定格式后的时间。

form_tz:转换之前的时间,可以是时间代码也可以是与GMT的偏移量

to_tz:要转换的时间,可以是时间代码也可以是与GMT的偏移量

mysql convert_tz 时区转换查询函数使用示例

例:mysql UTC时间转北京时间的方法

方法1:

注:utc时间相对于北京时间少八个小时

mysql> select CONVERT_TZ("2021-06-25 12:00:00","+00:00","+08:00");
+-----------------------------------------------------+
| CONVERT_TZ("2021-06-25 12:00:00","+00:00","+08:00") |
+-----------------------------------------------------+
| 2021-06-25 20:00:00                                 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

mysql UTC时间转北京时间的方法

方法2:

now()表示当前的时间!

mysql UTC时间转北京时间的方法

mysql> select CONVERT_TZ(now(),"+00:00","+08:00");
+-------------------------------------+
| CONVERT_TZ(now(),"+00:00","+08:00") |
+-------------------------------------+
| 2021-06-18 05:07:57                 |
+-------------------------------------+
1 row in set (0.00 sec)

MySQL date_add(),date_sub() ,timestampadd函数转换时间

date_add() 与 date_sub()函数可以在指定的时间上加上或减去一个相应的时间,这样也可以达到时区转换的目的。

date_add():在指定的时间上加上或减去指定的时间

date_sub():在指定的时间上减去指定的时间

timestampadd():

例1:mysql 使用 date_add() 函数转换时区

mysql> select date_add('2021-06-18 12:00:00', interval -8 hour);
+---------------------------------------------------+
| date_add('2021-06-18 12:00:00', interval -8 hour) |
+---------------------------------------------------+
| 2021-06-18 04:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql 使用 date_add() 函数转换时区

例2:mysql 使用 date_sub() 函数转换时区

mysql> select date_sub('2021-06-18 12:00:00', interval 8 hour);
+--------------------------------------------------+
| date_sub('2021-06-18 12:00:00', interval 8 hour) |
+--------------------------------------------------+
| 2021-06-18 04:00:00                              |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql 使用 date_sub() 函数转换时区

例3:mysql 使用 timestampadd() 函数转换时区

mysql> select timestampadd(hour, -8, '2021-06-18 12:00:00');
+-----------------------------------------------+
| timestampadd(hour, -8, '2021-06-18 12:00:00') |
+-----------------------------------------------+
| 2021-06-18 04:00:00                           |
+-----------------------------------------------+
1 row in set (0.00 sec)

mysql 使用 timestampadd() 函数转换时区