日期函数:Date_Add、AddDate、DateDiff、SubDate、TimeStampDiff、Period_Diff

258 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情

一、前言

大家好,今天文章的内容是:

  • Date_Add
  • AddDate
  • DateDiff
  • SubDate
  • TimeStampDiff
  • Period_Diff

二、内容

Date_Add

Date_Add(d, Interval expr type):该函数用于计算起始日期d加上一个时间段后的日期。

其中type值可以有很多选择,现记录如下:

  • 年、月、日:YearMonthDay

比如日期"2023-01-01"再过21天就春节了。

mysql> SELECT Date_Add("2023-01-01", INTERVAL 21 DAY);
+-----------------------------------------+
| Date_Add("2023-01-01", INTERVAL 21 DAY) |
+-----------------------------------------+
| 2023-01-22                              |
+-----------------------------------------+
1 row in set (0.00 sec)
  • 小时、分钟、秒:HourMinuteSecond

比如:

mysql> SELECT Date_Add("2023-01-21 23:59:00", INTERVAL 1 MINUTE);
+----------------------------------------------------+
| Date_Add("2023-01-21 23:59:00", INTERVAL 1 MINUTE) |
+----------------------------------------------------+
| 2023-01-22 00:00:00                                |
+----------------------------------------------------+
1 row in set (0.00 sec)
  • 周(七天)、三个月、微秒:WeekQuarterMicrosecond

比如:

mysql> SELECT Date_Add("2023-01-01 00:00:00", INTERVAL 1 Quarter);
+-----------------------------------------------------+
| Date_Add("2023-01-01 00:00:00", INTERVAL 1 Quarter) |
+-----------------------------------------------------+
| 2023-04-01 00:00:00                                 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

Date_Sub

Date_Sub(d, Interval expr type):与Date_Add()函数相反,Date_Sub()函数用于从日期d减去指定的时间间隔expr

比如:

mysql> SELECT Date_Sub("2022-12-07", INTERVAL 1084 DAY);
+-------------------------------------------+
| Date_Sub("2022-12-07", INTERVAL 1084 DAY) |
+-------------------------------------------+
| 2019-12-19                                |
+-------------------------------------------+
1 row in set (0.00 sec)

AddDate

AddDate(day, n):计算起始日期d加上n天的日期。

mysql> SELECT ADDDATE("2022-12-25", 7);
+--------------------------+
| ADDDATE("2022-12-25", 7) |
+--------------------------+
| 2023-01-01               |
+--------------------------+
1 row in set (0.00 sec)

AddTime

AddTime(time, n):时间t加上时间表达式n

mysql> SELECT AddTime("2022-12-31 22:33:44", "1:26:16");
+-------------------------------------------+
| AddTime("2022-12-31 22:33:44", "1:26:16") |
+-------------------------------------------+
| 2023-01-01 00:00:00                       |
+-------------------------------------------+
1 row in set (0.00 sec)

DateDiff

DateDiff(day1, day2):计算两个日期之间的相隔天数。

mysql> SELECT DateDiff('2023-01-01','2023-01-22')
    -> AS days;
+------+
| days |
+------+
|  -21 |
+------+
1 row in set (0.00 sec)

TimeDiff

TimeDiff(t1, t2):计算两个时间值的差值。

mysql> SELECT TimeDiff("23:30:00", "13:30:00");
+----------------------------------+
| TimeDiff("23:30:00", "13:30:00") |
+----------------------------------+
| 10:00:00                         |
+----------------------------------+
1 row in set (0.00 sec)

SubDate

SubDate(d, n):日期d减去n天后的日期。

mysql> SELECT SubDate('2022-12-07', 1084);
+-----------------------------+
| SubDate('2022-12-07', 1084) |
+-----------------------------+
| 2019-12-19                  |
+-----------------------------+
1 row in set (0.00 sec)

SubTime

SubTime(t, n):时间t减去n秒的时间。

mysql> SELECT SubTime("2022-12-07 00:00:08", 8);
+-----------------------------------+
| SubTime("2022-12-07 00:00:08", 8) |
+-----------------------------------+
| 2022-12-07 00:00:00               |
+-----------------------------------+
1 row in set (0.00 sec)

TimeStampDiff

TimeStampDiff(unit, e1, e2):根据给定的参数计算时间差(e2-e1),其中参数unit用于指定间隔单位,比如要计算相隔多少天,unit参数可以设为DAY,要计算相隔多少月,unit参数可以设为MONTH,以此类推。

mysql> SELECT TimeStampDiff(YEAR, "1949-10-01", "2023-10-01");
+-------------------------------------------------+
| TimeStampDiff(YEAR, "1949-10-01", "2023-10-01") |
+-------------------------------------------------+
|                                              74 |
+-------------------------------------------------+
1 row in set (0.00 sec)

Period_Diff

Period_Diff(period1, period2):返回两个时段之间的月份差值。

mysql> SELECT PERIOD_DIFF(202212, 201912);
+-----------------------------+
| PERIOD_DIFF(202212, 201912) |
+-----------------------------+
|                          36 |
+-----------------------------+
1 row in set (0.00 sec)

三、后话

好了,今天的文章内容就到这里,感谢观看。