MariaDB DATE_SUB() 函数使用指南

在 MariaDB 中,DATE_SUB() 是一个内置函数,它在指定的日期/时间上减去指定到时间间隔加并返回新的日期/时间。

MariaDB DATE_SUB() 语法

这是 MariaDB DATE_SUB() 函数的语法:

DATE_SUB(date, INTERVAL value unit)

参数

date
必需的。需要操作的日期。
days
必需的。在 date 上减去的天数。
value
必需的。时间/日期间隔。正数和负数都是允许的。
unit
必需的。时间/日期间隔的单位。

时间/日期间隔的单位可以是以下值中的一个:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH

如果您不提供参数或提供了错误数量的参数,MariaDB 将报告一个错误:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

返回值

MariaDB DATE_SUB() 函数指定的日期/时间添加指定的时间间隔,并返回一个新的日期/时间。DATE_SUB() 函数的返回值和参数有关:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURS, MINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEAR, MONTH 或者 DAY,返回 DATETIME
  • 其他情况下返回字符串。

MariaDB DATE_SUB() 示例

示例 1 - 减去

SELECT
  DATE_SUB('2023-01-06', INTERVAL 1 DAY),
  DATE_SUB('2023-01-06', INTERVAL 1 MONTH),
  DATE_SUB('2023-01-06', INTERVAL 1 YEAR)\G

输出:

  DATE_SUB('2023-01-06', INTERVAL 1 DAY): 2023-01-05
DATE_SUB('2023-01-06', INTERVAL 1 MONTH): 2022-12-06
 DATE_SUB('2023-01-06', INTERVAL 1 YEAR): 2022-01-06

示例 2 - 添加

MariaDB DATE_SUB() 允许通过提供要给负值以添加给定的时间间隔:

SELECT
  DATE_SUB('2023-01-06', INTERVAL -1 DAY),
  DATE_SUB('2023-01-06', INTERVAL -1 MONTH),
  DATE_SUB('2023-01-06', INTERVAL -1 YEAR)\G

输出:

  DATE_SUB('2023-01-06', INTERVAL -1 DAY): 2023-01-07
DATE_SUB('2023-01-06', INTERVAL -1 MONTH): 2023-02-06
 DATE_SUB('2023-01-06', INTERVAL -1 YEAR): 2024-01-06

示例 3 - 日期时间

MariaDB DATE_SUB() 函数支持您使用日期时间值:

SELECT DATE_SUB('2023-01-06 10:11:12', INTERVAL 1 HOUR);

输出:

+--------------------------------------------------+
| DATE_SUB('2023-01-06 10:11:12', INTERVAL 1 HOUR) |
+--------------------------------------------------+
| 2023-01-06 09:11:12                              |
+--------------------------------------------------+

同样,您可以使用其他时间单位,比如一年:

SELECT DATE_SUB('2023-01-06 10:11:12', INTERVAL 1 YEAR);

输出:

+--------------------------------------------------+
| DATE_SUB('2023-01-06 10:11:12', INTERVAL 1 YEAR) |
+--------------------------------------------------+
| 2022-01-06 10:11:12                              |
+--------------------------------------------------+

结论

在 MariaDB 中,DATE_SUB() 是一个内置函数,它在指定的日期/时间上减去指定到时间间隔加并返回运算结果。