MySQL常用日期和时间函数
日期/时间表示#
返回当前日期时间
1
2> SELECT NOW(); ## 同CURRENT_TIMESTAMP(),返回一个 datetime 表达式
<. 2021-03-14 15:37:16返回当前日期
1
2> SELECT DATE(NOW()); ## 同CURRENT_DATE() 和 CURDATE()
<. 2021-03-14返回当前时间
1
2> SELECT TIME(NOW()); ## 同CURRENT_TIME() 和 CURTIME()
<. 15:41:19单独返回年/月/日/时/分/秒
1
2
3
4
5
6
7
8
9
10
11
12> SELECT YEAR(NOW());
<. 2021
> SELECT MONTH(NOW());
<. 3
> SELECT DAY(NOW());
<. 14
> SELECT HOUR(NOW());
<. 15
> SELECT MINUTE(NOW());
<. 49
> SELECT SECOND(NOW());
<. 43另一种方式单独返回年/月/日/时/分/秒
使用 EXTRACT(unit FROM date)
函数,unit
为要返回值类型,date
为日期时间表达式。
1 | > SELECT EXTRACT(YEAR FROM NOW()); |
unit包括:YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,MICROSECOND等等。
使用 DATE_FORMAT(date,format)
函数,date
为日期时间表达式,format
为要返回的日期格式。
1 | > SELECT DATE_FORMAT(NOW(),"%Y"); |
常用的日期时间格式有:
格式 | 描述 |
---|---|
%Y | 4位数字年份 |
%m | 2位数字月份 (00 to 12) |
%d | 2位数字日期 (01 to 31) |
%H | 小时 (00 to 23) |
%i | 分钟 (00 to 59) |
%s | 秒钟 (00 to 59) |
%f | 毫秒 (000000 to 999999) |
更多的日期时间格式查看 Date and Time Functions 文档。
日期/时间计算#
加 x 年/月/日/时/分/秒
1
2
3
4> SELECT NOW();
<. 2021-03-14 18:21:18
> SELECT DATE_ADD(NOW(),INTERVAL 1 HOUR);
<. 2021-03-14 19:21:18减 x 年/月/日/时/分/秒
1
2
3
4> SELECT NOW();
<. 2021-03-14 18:23:07
> SELECT DATE_SUB(NOW(),INTERVAL 1 DAY);
<. 2021-03-13 18:23:07计算两个日期时间之差
使用 DATEDIFF(date1,date2)
函数计算两个日期相差几天。
1 | > SELECT DATEDIFF(DATE_ADD(NOW(), INTERVAL 1 DAY),CURDATE()); |
使用 TIMEDIFF(time1,time2)
函数计算两个时间相差多少小时多少分钟多少秒钟。
1 | > SELECT TIMEDIFF(DATE_ADD(CURTIME(),INTERVAL 1 HOUR),CURTIME()); |
日期时间与unix时间戳互相转换#
日期时间 转 时间戳
函数UNIX_TIMESTAMP(datetime)
带一个日期时间表达式参数,当不带参数时,相当于datetime=now()
。1
2
3
4> SELECT UNIX_TIMESTAMP();
<. 1615721103
> SELECT UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 1 DAY)); # 返回明天的时间戳
<. 1615807716时间戳 转 日期时间
函数FROM_UNIXTIME(unix_timestamp,format)
有两个参数,unix_timestamp
参数必须,表示时间戳,format
参数可选,表示日期时间格式,当format
为空时,表示返回"%Y-%m-%d %H:%i:%s"
格式的日期时间。1
2
3
4> SELECT FROM_UNIXTIME(1615807716);
<. 2021-03-15 19:28:36
> SELECT FROM_UNIXTIME(1615807716,"%Y-%m-%d");
<. 2021-03-15