MySQL - SUBDATE() 函数
MYSQL SUBDATE() 函数用于将日期值减去指定的时间间隔。此函数接受两个参数:日期和需要从日期值中减去的指定时间间隔。此函数的返回值是减去时间间隔后的最终日期。如果日期和时间间隔参数均为 NULL,则返回 NULL 值。
语法
以下是 MySQL SUBDATE() 函数的语法 -
SUBDATE(date, INTERVAL expr unit);
参数
此方法接受三个参数。如下所示:
- date 表示日期的值,可以是字符串、DATE(年、月、日)、DATETIME(小时、分钟或秒)或 TIMESTAMP 类型。
- expr 表示间隔值。
- unit 是 expr 值表示的间隔类型,可以是 DAY、WEEK、MONTH、QUARTER、YEAR、HOUR、MINUTE、SECOND、MICROSECOND。
返回值
此函数返回一个新日期,该新日期是从原始日期中减去指定时间间隔的结果。
其他语法
此函数具有其他语法,如下所示。它接受表示日期的表达式和表示要从给定日期中减去的天数的间隔 -
SUBDATE(expr, days);
示例
在下面的查询中,我们使用 MySQL SUBDATE 函数 () 从日期"2023-09-05"中减去 20 天 -
SELECT SUBDATE('2023-09-05', INTERVAL 20 DAY) As Result;
输出
这将产生以下结果 -
Result |
---|
2023-08-16 |
示例
以下是另一个示例,我们从给定的日期和时间中减去特定的时长 -
SELECT SUBDATE('2023-05-23 20:40:32.88558', '13 6:4:1.222222') As Result;
输出
以下是输出 -
Result |
---|
2018-05-10 20:40:32.885580 |
示例
以下示例演示了此函数的第二种语法,我们将要减去的天数作为间隔传递 -
SELECT SUBDATE('1995-11-15', 554) As Result;
输出
以下是输出结果 -
Result |
---|
1994-05-10 |
示例
我们也可以将负值作为参数传递给此函数 -
SELECT SUBDATE('1995-11-15', -554) As Result;
输出
以下是输出结果 -
Result |
---|
1997-05-22 |
示例
在此示例中,我们使用以下 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);
执行以下查询以获取上述创建的表中的所有插入记录 -
Select * From ORDERS;
以下是 ORDERS 表 -
OID | DATE | CUSTOMER_ID | AMOUNT |
---|---|---|---|
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 |
在这里,我们使用 SUBDATE() 函数从"DATE"列中的值中减去 14 年 -
SELECT OID, DATE, SUBDATE(DATE, INTERVAL 14 YEAR) As Result From ORDERS;
输出
输出显示如下 −
OID | DATE | Result |
---|---|---|
102 | 2009-10-08 00:00:00 | 1995-10-08 00:00:00 |
100 | 2009-10-08 00:00:00 | 1995-10-08 00:00:00 |
101 | 2009-11-20 00:00:00 | 1995-11-20 00:00:00 |
103 | 2008-05-20 00:00:00 | 1994-05-20 00:00:00 |