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;

输出

这将产生以下结果:

结果
2023-08-16

示例

以下是另一个示例,我们从中减去特定持续时间给定的日期和时间:

SELECT SUBDATE('2023-05-23 20:40:32.88558', '13 6:4:1.222222')
As Result;

输出

以下是输出:

结果
2018-05-10 20:40:32.885580

示例

以下示例演示了此函数的第二种语法,我们将其作为间隔传递要减去的日数:

SELECT SUBDATE('1995-11-15', 554) As Result;

输出

以下是输出:

结果
1994-05-10

示例

我们还可以将负值作为参数传递给此函数:

SELECT SUBDATE('1995-11-15', -554) As 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 日期 客户ID 金额
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 日期 结果
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
广告