mysql 常用时间函数
程序员文章站
2024-01-22 20:10:04
...
目录
当前日期
- CURRENT_DATE
- curdate
mysql> select current_date(),curdate();
+----------------+------------+
| current_date() | curdate() |
+----------------+------------+
| 2020-11-03 | 2020-11-03 |
+----------------+------------+
当前时间
- CURRENT_TIME
- curtime
mysql> select current_time(),curtime();
+----------------+-----------+
| current_time() | curtime() |
+----------------+-----------+
| 11:11:21 | 11:11:21 |
+----------------+-----------+
当前时间戳(日期时间)
- CURRENT_TIMESTAMP
- now
mysql> select current_timestamp(),now();
+---------------------+---------------------+
| current_timestamp() | now() |
+---------------------+---------------------+
| 2020-11-03 11:11:49 | 2020-11-03 11:11:49 |
+---------------------+---------------------+
日期运算
- DATE_ADD(date,INTERVAL expr type)
- DATE_SUB(date,INTERVAL expr type)
date 是一个 DATETIME 或DATE值,用来指定起始时间。
expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 '-'开头。
type 为关键词,它指示了表达式被解释的方式。
关键词INTERVA及 type 分类符均不区分大小写。
若 date 参数是一个 DATE 值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个 DATETIME值。
加一秒
mysql> select now(),date_add(curdate(),interval 1 second) 日期 ,date_add(curtime(),interval 1 second) 时间,date_add(now(),interval 1 second) 日期时间;
+---------------------+---------------------+----------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+---------------------+----------+---------------------+
| 2020-11-03 11:23:50 | 2020-11-03 00:00:01 | 11:23:51 | 2020-11-03 11:23:51 |
+---------------------+---------------------+----------+---------------------+
1 row in set (0.00 sec)
加一分
mysql> select now(),date_add(curdate(),interval 1 minute) 日期 ,date_add(curtime(),interval 1 minute) 时间,date_add(now(),interval 1 minute) 日期时间;
+---------------------+---------------------+----------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+---------------------+----------+---------------------+
| 2020-11-03 11:27:40 | 2020-11-03 00:01:00 | 11:28:40 | 2020-11-03 11:28:40 |
+---------------------+---------------------+----------+---------------------+
1 row in set (0.00 sec)
加小时
mysql> select now(),date_add(curdate(),interval 1 hour) 日期 ,date_add(curtime(),interval 1 hour) 时间,date_add(now(),interval 1 hour) 日期时间;
+---------------------+---------------------+----------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+---------------------+----------+---------------------+
| 2020-11-03 11:28:48 | 2020-11-03 01:00:00 | 12:28:48 | 2020-11-03 12:28:48 |
加一天
mysql> select now(),date_add(curdate(),interval 1 day) 日期 ,date_add(curtime(),interval 1 day) 时间,date_add(now(),interval 1 day) 日期时间;
+---------------------+------------+----------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+------------+----------+---------------------+
| 2020-11-03 11:30:07 | 2020-11-04 | 35:30:07 | 2020-11-04 11:30:07 |
+---------------------+------------+----------+---------------------+
1 row in set (0.00 sec)
加一月
mysql> select now(),date_add(curdate(),interval 1 month) 日期 ,date_add(curtime(),interval 1 month) 时间,date_add(now(),interval 1 month) 日期时间;
+---------------------+------------+--------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+------------+--------+---------------------+
| 2020-11-03 11:31:03 | 2020-12-03 | NULL | 2020-12-03 11:31:03 |
+---------------------+------------+--------+---------------------+
加一年
mysql> select now(),date_add(curdate(),interval 1 year) 日期 ,date_add(curtime(),interval 1 year) 时间,date_add(now(),interval 1 year) 日期时间;
+---------------------+------------+--------+---------------------+
| now() | 日期 | 时间 | 日期时间 |
+---------------------+------------+--------+---------------------+
| 2020-11-03 11:32:33 | 2021-11-03 | NULL | 2021-11-03 11:32:33 |
+---------------------+------------+--------+---------------------+
- DATEDIFF (date1 ,date2 ) 两个日期差 (天)
mysql> select datediff('2000-01-02 02:02:02','2000-01-01 01:01:01');
+-------------------------------------------------------+
| datediff('2000-01-02 02:02:02','2000-01-01 01:01:01') |
+-------------------------------------------------------+
| 1 |
+-------------------------------------------------------+
- ADDTIME (date2 ,time_interval )
将time_interval(最大到天)加到date2
mysql> select addtime('2010-01-01 01:01:01',' 01 01:01:01');
+-----------------------------------------------+
| addtime('2010-01-01 01:01:01',' 01 01:01:01') |
+-----------------------------------------------+
| 2010-01-02 02:02:02 |
+-----------------------------------------------+
- 日期转字符串
mysql> select date_format(now(), '%Y-%m-%d') from dual;
+--------------------------------+
| date_format(now(), '%Y-%m-%d') |
+--------------------------------+
| 2020-11-03 |
+--------------------------------+
1 row in set (0.00 sec)
mysql> select date_format(now(), '%Y-%c-%d %h:%i:%s') from dual;
+-----------------------------------------+
| date_format(now(), '%Y-%c-%d %h:%i:%s') |
+-----------------------------------------+
| 2020-11-03 02:13:20 |
+-----------------------------------------+
1 row in set (0.00 sec)
- 日期 转 成字符串
mysql> select str_to_date('2015-2-04 05:14:15' , '%Y-%c-%d %h:%i:%s') from dual;
+---------------------------------------------------------+
| str_to_date('2015-2-04 05:14:15' , '%Y-%c-%d %h:%i:%s') |
+---------------------------------------------------------+
| 2015-02-04 05:14:15 |
+---------------------------------------------------------+
1 row in set (0.00 sec)