MySQL - PERIOD_DIFF() 函式



MySQL 的 PERIOD_DIFF() 函式類似於 PERIOD_ADD() 函式。它用於查詢兩個期間值之間的差值。在 MySQL 中,期間定義為年份和月份的組合;並且將以 YYMM 或 YYYYMM 的格式表示。

此函式接受兩個期間值作為引數值,計算它們之間的差值並返回結果(以月數的形式)。

如果傳遞給函式的任何一個引數為 NULL,則返回 NULL 值。

語法

以下是 MySQL PERIOD_DIFF() 函式的語法:

PERIOD_DIFF(P1,P2)

引數

此方法接受兩個引數。下面描述了相同的內容:

  • P1 是期間值。格式為“YYMM”或“YYYYMM”

  • P2 是我們要減去的另一個期間值。

返回值

此函式返回期間 P1 和 P2 之間的月差。

示例

在以下示例中,我們使用 PERIOD_DIFF() 函式來計算兩個給定期間值之間的差值:

SELECT PERIOD_DIFF(202409, 202309) As Result;

輸出

這將產生以下結果:

結果
12

示例

以下是此函式的另一個示例:

SELECT PERIOD_DIFF('2405', '2305') As Result;

輸出

以下是輸出:

結果
12

示例

在此示例中,我們使用以下 CREATE TABLE 查詢建立了一個名為 PLAYERS 的表

CREATE TABLE PLAYERS(
   ID int,
   NAME varchar(255),
   DATE_OF_BIRTH date,
   DOB_PERIOD varchar(30),
   Country varchar(255),
   PRIMARY KEY (ID)
);

現在,使用 INSERT 語句將以下記錄插入 ORDERS 表中:

INSERT INTO PLAYERS VALUES
(1, 'Shikhar Dhawan', DATE('1981-12-05'), 198112, 'India'),
(2, 'Jonathan Trott', DATE('1981-04-22'), 198104, 'SouthAfrica'),
(3, 'Kumara Sangakkara', DATE('1977-10-27'), 197710, 'Srilanka'),
(4, 'Virat Kohli', DATE('1988-11-05'), 198811, 'India'),
(5, 'Rohit Sharma', DATE('1987-04-30'), 198704, 'India'),
(6, 'Ravindra Jadeja', DATE('1988-12-06'), 198812, 'India'),
(7, 'James Anderson', DATE('1982-06-30'), 198206, 'England');

執行以下查詢以獲取在上面建立的表中插入的所有記錄:

Select * From PLAYERS;

以下是 PLAYERS 表:

ID 姓名 出生日期 DOB_PERIOD 國家
1 希哈爾·達萬 1981-12-05 198112 印度
2 喬納森·特羅特 1981-04-22 198104 南非
3 庫馬拉·桑加卡拉 1977-10-27 197710 斯里蘭卡
4 維拉特·科利 1988-11-05 198811 印度
5 羅希特·夏爾馬 1987-04-30 198704 印度
6 拉溫德拉·賈德賈 1988-12-06 198812 印度
7 詹姆斯·安德森 1982-06-30 198206 英格蘭

在這裡,我們使用 MySQL PERIOD_DIFF() 函式來計算“DOB_PERIOD”與固定期間“197012”之間的期間差:

SELECT ID, NAME, DATE_OF_BIRTH, DOB_PERIOD, PERIOD_DIFF(DOB_PERIOD, 197012)
As Result From PLAYERS;

輸出

輸出顯示如下:

ID 姓名 出生日期 DOB_PERIOD 結果
1 希哈爾·達萬 1981-12-05 198112 132
2 喬納森·特羅特 1981-04-22 198104 124
3 庫馬拉·桑加卡拉 1977-10-27 197710 82
4 維拉特·科利 1988-11-05 198811 215
5 羅希特·夏爾馬 1987-04-30 198704 196
6 拉溫德拉·賈德賈 1988-12-06 198812 216
7 詹姆斯·安德森 1982-06-30 198206 138
廣告