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
廣告