MySQL提供了大量的日期和时间函数,这些函数用于在查询中处理和操作日期与时间值。
参考官方文档:https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html
获取日期时间函数
now():获取当前的日期和时间,包含年、月、日、时、分、秒。
1 2 3 4 5 6 7 | mysql> select now(); + ---------------------+ | now() | + ---------------------+ | 2024-06-18 07:35:45 | + ---------------------+ 1 row in set (0.00 sec) |
curdate():获取当前的日期,只包含年、月、日部分。
1 2 3 4 5 6 7 | mysql> select curdate(); + ------------+ | curdate() | + ------------+ | 2024-06-18 | + ------------+ 1 row in set (0.00 sec) |
curtime():获取当前的时间,只包含时、分、秒部分。
1 2 3 4 5 6 7 | mysql> select curtime(); + -----------+ | curtime() | + -----------+ | 07:37:31 | + -----------+ 1 row in set (0.00 sec) |
日期与时间戳的转化
unix_timestamp:将日期转换为UNIX时间戳。
1 2 3 4 5 6 7 | mysql> select unix_timestamp(now()); + -----------------------+ | unix_timestamp(now()) | + -----------------------+ | 1718696453 | + -----------------------+ 1 row in set (0.00 sec) |
from_unixtime(timestamp)函数:是将UNIX时间戳转化为日期时间,与unix_timestamp(date)函数互为反函数。
1 2 3 4 5 6 7 | mysql> select from_unixtime(1718696453); + ---------------------------+ | from_unixtime(1718696453) | + ---------------------------+ | 2024-06-18 07:40:53 | + ---------------------------+ 1 row in set (0.00 sec) |
日期格式化
date_format():将日期转化为指定格式的字符串。
1 2 3 4 5 6 7 | mysql> select date_format(now(), '%Y-%m-%d %H:%i:%s' ); + -----------------------------------------+ | date_format(now(), '%Y-%m-%d %H:%i:%s' ) | + -----------------------------------------+ | 2024-06-18 07:47:16 | + -----------------------------------------+ 1 row in set (0.00 sec) |
str_to_date():将指定格式的字符串转化为日期。
1 2 3 4 5 6 7 | mysql> select str_to_date( '2024-06-18 07:47:16' , '%Y-%m-%d %H:%i:%s' ); + ---------------------------------------------------------+ | str_to_date( '2024-06-18 07:47:16' , '%Y-%m-%d %H:%i:%s' ) | + ---------------------------------------------------------+ | 2024-06-18 07:47:16 | + ---------------------------------------------------------+ 1 row in set (0.00 sec) |
下面是一些常用的日期格式符号:
- %Y:四位数的年份(如:2022)
- %y:两位数的年份(如:22)
- %m:两位数的月份(01~12)
- %d:两位数的日期(01~31)
- %H:两位数的小时(00~23)
- %i:两位数的分钟(00~59)
- %s:两位数的秒钟(00~59)
更多的日期格式符号可以参考官方文档。
注意:在使用str_to_date函数时,请确保传入的日期字符串和格式字符串的格式匹配,否则可能会得到错误的结果。
日期时间的运算
date_add(date,INTERVAL expr unit):在指定日期上增加时间。
date_sub(date,INTERVAL expr unit),在指定日期上减去时间。
参数说明:
- date参数指定开始日期或日期时间值。
- expr是一个表达式,指定从开始日期加上或减去的间隔值;expr被计算为一个字符串;它可以以-开头表示负间隔。
- unit是一个关键字,指示表达式应使用的单位。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | mysql> select date_add( '2024-04-10' ,INTERVAL 1 DAY ); + ---------------------------------------+ | date_add( '2024-04-10' ,INTERVAL 1 DAY ) | + ---------------------------------------+ | 2024-04-11 | + ---------------------------------------+ 1 row in set (0.00 sec) mysql> select date_add( '2024-04-10' ,INTERVAL -1 DAY ); + ----------------------------------------+ | date_add( '2024-04-10' ,INTERVAL -1 DAY ) | + ----------------------------------------+ | 2024-04-09 | + ----------------------------------------+ 1 row in set (0.00 sec) mysql> select date_sub( '2024-04-10' ,INTERVAL -1 DAY ); + ----------------------------------------+ | date_sub( '2024-04-10' ,INTERVAL -1 DAY ) | + ----------------------------------------+ | 2024-04-11 | + ----------------------------------------+ 1 row in set (0.00 sec) mysql> select date_sub( '2024-04-10' ,INTERVAL 1 DAY ); + ---------------------------------------+ | date_sub( '2024-04-10' ,INTERVAL 1 DAY ) | + ---------------------------------------+ | 2024-04-09 | + ---------------------------------------+ 1 row in set (0.00 sec) |
datediff(expr1,expr2)函数:返回expr1−expr2,以从一个日期到另一个日期的天数表示。其中expr1和expr2是日期或日期和时间表达式;计算中只使用值的日期部分。
1 2 3 4 5 6 7 | mysql> select datediff( '2024-04-10' , '2024-05-10' ); + --------------------------------------+ | datediff( '2024-04-10' , '2024-05-10' ) | + --------------------------------------+ | -30 | + --------------------------------------+ 1 row in set (0.00 sec) |
到此这篇关于MySQL常用日期时间函数的文章就介绍到这了,更多相关MySQL常用日期时间函数内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!