MySQL 【日期】函数大全(一)

发布于:2024-10-17 ⋅ 阅读:(44) ⋅ 点赞:(0)
ADDDATE ADDTIME CURDATE CURRENT_DATE
CURRENT_TIME CURRENT_TIMESTAMP CURTIME DATE
1、ADDDATE

ADDDATE(date, days) :在指定的日期/时间上加上指定的时间间隔,并返回新的日期/时间。

语法:

1、ADDDATE(date, days)

2、ADDDATE(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

返回值:

  • 如果 date 参数是 DATE 类型,并且时间间隔为 YEARMONTH 或者 DAY,返回 DATE
  • 如果 date 参数是 DATE 类型,并且时间间隔为 HOURSMINUTES 或者 SECONDS,返回 DATETIME
  • 如果 date 参数是 DATETIME 类型,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且时间间隔为 YEARMONTH 或者 DAY,返回 DATETIME
  • 如果 date 参数是 TIME 类型,并且计算只涉及 HOURSMINUTES 和 SECONDS 部分,返回 TIME。(开始于 MySQL 8.0.28)
SELECT
    ADDDATE(now(), 10),
    ADDDATE('2024-10-11', -10)

SELECT
    ADDDATE('2024-10-11', INTERVAL 10 DAY),
    ADDDATE('2024-10-11', INTERVAL 10 HOUR)

SELECT
    ADDDATE('2024-10-11 10:00:00', INTERVAL 10 HOUR),
    ADDDATE('2024-10-11 10:00:00', INTERVAL 10 MINUTE)

SELECT
    ADDDATE(CURDATE(), INTERVAL 10 HOUR),
    ADDDATE(NOW(), INTERVAL 10 MINUTE)

2、ADDTIME

ADDTIME(time1, time2) :在指定的时间上加上指定的时间间隔并返回结果。

time1:它是一个 datetime 或者 time 表达式。

time2:它是个时间表达式。它可以是正数或者负数。

给指定的时间加上 10 秒钟

SELECT
    ADDTIME('2024-10-11 10:10:10', 10),
    ADDTIME('10:10:10', 10)

给指定的时间加上 1 分钟

SELECT
    ADDTIME('10:10:10',100),
    ADDTIME('10:10:10', '100'),
    ADDTIME('10:10:10', '0:01:00')

给指定的时间加上和减去 1 小时 10 分钟 10 秒 10 微秒

SELECT
    ADDTIME('10:00:00', '01:10:10.000010'),
    ADDTIME('10:00:00', '-01:10:10.000010'),
    SUBTIME('10:00:00', '01:10:10.000010')

3、CURDATE

CURDATE() :按 YYYY-MM-DD 或 YYYYMMDD 格式返回系统的当前日期。

返回系统的当前日期

SELECT
    CURDATE(),
    CURDATE() + 0;

CURDATE() + N 意味着当前日期加上一个数字。比如,系统当前日期加 1,结果为 YYYYMMDD 格式

SELECT CURDATE() + 1;
-- 结果
+---------------+
| CURDATE() + 1 |
+---------------+
|      20241012 |
+---------------+
4、CURRENT_DATE

CURRENT_DATE() :按 YYYY-MM-DD 或 YYYYMMDD 格式返回系统的当前日期。与CURDATE()函数完全相同。

SELECT
    CURRENT_DATE,
    CURRENT_DATE(),
    CURRENT_DATE() + 0;
-- 结果
+--------------+----------------+--------------------+
| CURRENT_DATE | CURRENT_DATE() | CURRENT_DATE() + 0 |
+--------------+----------------+--------------------+
| 2024-10-11   | 2024-10-11     |           20241011 |
+--------------+----------------+--------------------+
5、CURRENT_TIME

CURRENT_TIME() :按 hh:mm:ss 格式返回系统的当前时间。

SELECT 
    CURRENT_TIME,
    CURRENT_TIME(),
    CURRENT_TIME() + 0;
-- 结果
+--------------+----------------+--------------------+
| CURRENT_TIME | CURRENT_TIME() | CURRENT_TIME() + 0 |
+--------------+----------------+--------------------+
| 02:11:03     | 02:11:03       |              21103 |
+--------------+----------------+--------------------+
6、CURRENT_TIMESTAMP

CURRENT_TIMESTAMP() :按 YYYY-MM-DD hh:mm:ss 格式返回当前时间和日期。与 NOW() 函数完全相同。

SELECT CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP() + 1;

--结果
+---------------------+-------------------------+
| CURRENT_TIMESTAMP() | CURRENT_TIMESTAMP() + 1 |
+---------------------+-------------------------+
| 2024-10-11 02:29:32 |          20241011022933 |
+---------------------+-------------------------+
7、CURTIME

CURTIME() :按 hh:mm:ss 格式返回系统的当前时间。与 CURRENT_TIME函数完全相同。

SELECT CURTIME(), CURTIME() + 0;
-- 结果
+-----------+---------------+
| CURTIME() | CURTIME() + 0 |
+-----------+---------------+
| 02:04:35  |         20435 |
+-----------+---------------+
8、DATE

DATE(expr) :从日期时间表达式中提取日期部分并返回。

如果指定的表达式不是一个合法的日期或者日期时间,DATE() 函数将返回 NULL

如果参数为 NULLDATE() 函数将返回 NULL

SELECT
    DATE('2024-10-11'),
    DATE('2024-10-11 10:10:10'),
    DATE(NOW()),
    DATE('2024-02-30'),
    DATE('Not A Date'),
    DATE(NULL)