日期操作是 MySQL 中的常用操作,掌握常用的日期时间函数并熟练组合运用,能够帮助我们解决查询中的许多难题。常用的数值函数如下表所示,函数括号内为输入的参数。
函数 | 说明 |
---|---|
now() | 返回当前日期时间 |
curdate() | 返回当前日期 |
curtime() | 返回当前时间 |
week(date) | 返回 date 日期是一年中的第几周 |
year(date)、month(date)、day(date) | 返回 date 日期中的年份、月份、日 |
datediff(date1, date12) | 返回两个日期间隔的天数:date1-date2 |
adddate(date,n) | 返回 date 日期添加 n 天后的新日期 |
示例:
now()
返回当前日期时间。
select now();
输出结果:
+---------------------+
| now() |
+---------------------+
| 2020-11-24 16:53:41 |
+---------------------+
1 row in set (0.00 sec)
curdate()
返回当前日期。
select curdate();
输出结果:
+------------+
| curdate() |
+------------+
| 2020-11-24 |
+------------+
1 row in set (0.00 sec)
curtime()
返回当前时间。
select curtime();
输出结果:
+-----------+
| curtime() |
+-----------+
| 16:54:20 |
+-----------+
1 row in set (0.00 sec)
week(date)
返回 date 日期是一年中的第几周。
select week('2020-07-01');
输出结果:
+--------------------+
| week('2020-07-01') |
+--------------------+
| 26 |
+--------------------+
1 row in set (0.00 sec)
year(date)
、month(date)
、day(date)
返回 date 日期中的年份、月份、日。
select year('2020-07-01'), month('2020-07-01'), day('2020-07-01');
输出结果:
+--------------------+---------------------+-------------------+
| year('2020-07-01') | month('2020-07-01') | day('2020-07-01') |
+--------------------+---------------------+-------------------+
| 2020 | 7 | 1 |
+--------------------+---------------------+-------------------+
1 row in set (0.00 sec)
datediff(date1,date2)
返回 date1 与 date2 间隔的天数。
select datediff('2020-07-01','2020-06-01');
输出结果:
+-------------------------------------+
| datediff('2020-07-01','2020-06-01') |
+-------------------------------------+
| 30 |
+-------------------------------------+
1 row in set (0.00 sec)
注意:如果 date1 日期比 date2 日期小,输出为负值。
adddate(date,n)
返回 date 日期添加 n 天后的新日期。
select adddate('2020-07-01',10);
输出结果:
+--------------------------+
| adddate('2020-07-01',10) |
+--------------------------+
| 2020-07-11 |
+--------------------------+
1 row in set (0.00 sec)