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