MySQL - CONVERT_TZ() 函数



MySQL 以五种数据类型支持时间值:DATE、DATETIME、TIME、TIMESTAMP、YEAR。这些数据类型用于存储时间信息,例如某个时间点的时间;因此,此信息会随着时间推移而不断变化。因此,为了处理此类数据,MySQL 还支持各种时间函数。

众所周知,世界并不遵循单一时间戳。相反,时间被划分为时区,由于地球自转,每个区域显示的时间都不同。此时间差通常相对于 UTC 计算。UTC 代表协调世界时。它是一种时间标准,在世界范围内广泛使用。

MySQL CONVERT_TZ() 函数

MySQL 提供了一个名为 CONVERT_TZ() 的函数,用于将给定日期从一个时区转换为另一个时区。

语法

以下是 MySQL CONVERT_TZ() 函数的语法:

CONVERT_TZ(dt,from_tz,to_tz)

参数

此函数接受 3 个参数。具体描述如下:

  • date − 需要转换的日期值。

  • from_tz − 日期当前的时区

  • to_tz − 需要将当前日期转换到的时区。

返回值

此函数返回一个 datetime 值,表示从指定的时区 (from_tz) 转换为另一个时区 (to_tz) 的输入日期或日期时间。

示例

以下示例演示了 CONVERT_TZ() 函数的用法:

SELECT CONVERT_TZ('15:30:00','+00:00','+10:00');

输出

获得以下输出:

CONVERT_TZ('2019-11-21 15:30:00','+00:00','+10:00')
2019-11-22 01:30:00

示例

以下是此函数的另一个示例:

SELECT CONVERT_TZ('1919-06-21 21:00:00','+00:00','+10:00');

输出

获得以下输出:

CONVERT_TZ('1919-06-21 21:00:00','+00:00','+10:00')
1919-06-21 21:00:00

示例

以下查询将 GMT(格林威治标准时间)转换为 IST(印度标准时间):

SELECT CONVERT_TZ('1886-11-20 16:29:30', '+00:00','+05:30');

输出

获得以下输出:

CONVERT_TZ('1886-11-20 16:29:30', '+00:00','+05:30')
1886-11-20 16:29:30

示例

以下查询将 IST(印度标准时间)转换为 GMT(格尔福标准时间)

SELECT CONVERT_TZ('1886-11-20 16:29:30', '+05:30','+04:00');

输出

获得以下输出:

CONVERT_TZ('1886-11-20 16:29:30', '+05:30','+04:00')
1886-11-20 16:29:30

示例

假设我们使用以下 CREATE TABLE 查询创建了一个名为 ORDERS 的表:

CREATE TABLE ORDERS (
   OID INT NOT NULL,
   DATE VARCHAR (20) NOT NULL,
   CUSTOMER_ID INT NOT NULL,
   AMOUNT DECIMAL (18, 2)
);

现在,使用 INSERT 语句将以下记录插入 ORDERS 表中:

INSERT INTO ORDERS VALUES 
(102, '2009-10-08 00:00:00', 3, 3000.00),
(100, '2009-10-08 00:00:00', 3, 1500.00),
(101, '2009-11-20 00:00:00', 2, 1560.00),
(103, '2008-05-20 00:00:00', 4, 2060.00);

以下查询将 DATE 列中的日期从 GMT(格林威治标准时间)转换为 IST(印度标准时间):

SELECT OID, DATE, CONVERT_TZ(DATE, '+00:00','+05:30'), AMOUNT 
FROM ORDERS;

输出

输出如下所示:

OID DATE CONVERT_TZ(DATE, '+00:00','+05:30') AMOUNT
102 2009-10-08 00:00:00 2009-10-08 05:30:00.000000 3000.00
100 2009-10-08 00:00:00 2009-10-08 05:30:00.000000 1500.00
101 2009-11-20 00:00:00 2009-11-20 05:30:00.000000 1560.00
103 2008-05-20 00:00:00 2008-05-20 05:30:00.000000 2060.00

时区列表

以下是各种时区的列表:

序号 名称和说明 相对于 GMT
1

GMT

格林威治标准时间

GMT
2

UTC

协调世界时

GMT
3

ECT

欧洲中部时间

GMT+1:00
4

EET

东欧时间

GMT+2:00
5

ART

(阿拉伯) 埃及标准时间

GMT+2:00
6

EAT

东非时间

GMT+3:00
7

MET

中东时间

GMT+3:30
8

NET

近东时间

GMT+4:00
9

PLT

巴基斯坦拉合尔时间

GMT+5:00
10

IST

印度标准时间

GMT+5:30
11

BST

孟加拉国标准时间

GMT+6:00
12

VST

越南标准时间

GMT+7:00
13

CTT

中国台湾时间

GMT+8:00
14

JST

日本标准时间

GMT+9:00
15

ACT

澳大利亚中部时间

GMT+9:30
16

AET

澳大利亚东部时间

GMT+10:00
17

SST

所罗门群岛标准时间

GMT+11:00
18

NST

新西兰标准时间

GMT+12:00
19

MIT

中途岛时间

GMT-11:00
20

HST

夏威夷标准时间

GMT-10:00
21

AST

阿拉斯加标准时间

GMT-9:00
22

PST

太平洋标准时间

GMT-8:00
23

PNT

凤凰城标准时间

GMT-7:00
24

MST

山区标准时间

GMT-7:00
25

CST

中部标准时间

GMT-6:00
26

EST

东部标准时间

GMT-5:00
27

IET

印第安纳州东部标准时间

GMT-5:00
28

PRT

波多黎各和美属维尔京群岛时间

GMT-4:00
29

CNT

加拿大纽芬兰时间

GMT-3:30
30

AGT

阿根廷标准时间

GMT-3:00
31

BET

巴西东部时间

GMT-3:00
32

CAT

中非时间

GMT-1:00
广告