MySQL - PERIOD_ADD() 函数
MySQL PERIOD_ADD() 函数用于将一定数量的月份添加到一个周期中。在 MySQL 中,周期定义为年份和月份的组合;其格式为 YYMM 或 YYYYMM。
此 MySQL 函数接受一个周期和一个表示月份的数值作为参数;并将给定的月份数添加到给定的周期中。此函数的结果将采用 YYYYMM 格式。
语法
以下是 MySQL PERIOD_ADD() 函数的语法 -
PERIOD_ADD(P,N);
参数
此方法接受两个参数。具体说明如下 -
P 是周期值。格式为"YYMM"或"YYYYMM"。
N 是需要添加到周期的月份数。
返回值
此函数返回添加指定月份数后的新周期值。
示例
以下示例演示了 PERIOD_ADD() 函数的用法 -
SELECT PERIOD_ADD('202309', 12) As Result;
输出
这将产生以下结果 -
Result |
---|
202409 |
示例
我们也可以将负值作为参数传递给此函数 -
SELECT PERIOD_ADD('202308', -09) As Result;
输出
以下是输出 -
Result |
---|
202211 |
示例
在此示例中,我们使用以下 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 | NAME | DATE_OF_BIRTH | DOB_PERIOD | COUNTRY |
---|---|---|---|---|
1 | Shikhar Dhawan | 1981-12-05 | 198112 | India |
2 | Jonathan Trott | 1981-04-22 | 198104 | SouthAfrica |
3 | Kumara Sangakkara | 1977-10-27 | 197710 | Srilanka |
4 | Virat Kohli | 1988-11-05 | 198811 | India |
5 | Rohit Sharma | 1987-04-30 | 198704 | India |
6 | Ravindra Jadeja | 1988-12-06 | 198812 | India |
7 | James Anderson | 1982-06-30 | 198206 | England |
这里,我们使用 MySQL PERIOD_ADD() 函数将 12 个月 添加到"PLAYERS"表中的"DOB_PERIOD"中 -
SELECT ID, NAME, DATE_OF_BIRTH, DOB_PERIOD, PERIOD_ADD(DOB_PERIOD, 12) As Result From PLAYERS;
输出
输出结果如下 -
ID | NAME | DATE_OF_BIRTH | DOB_PERIOD | Result |
---|---|---|---|---|
1 | Shikhar Dhawan | 1981-12-05 | 198112 | 198212 |
2 | Jonathan Trott | 1981-04-22 | 198104 | 198204 |
3 | Kumara Sangakkara | 1977-10-27 | 197710 | 197810 |
4 | Virat Kohli | 1988-11-05 | 198811 | 198911 |
5 | Rohit Sharma | 1987-04-30 | 198704 | 198804 |
6 | Ravindra Jadeja | 1988-12-06 | 198812 | 198912 |
7 | James Anderson | 1982-06-30 | 198206 | 198306 |