MySQL经常使用时间、日期相关函数
MySQL经常使用的时间、日期相关函数
1. 日期函数
- 显示当前日期函数:CURDATE(), CURRENT_DATE(), CURRENT_DATE
SQL:select CURDATE(), CURRENT_DATE(), CURRENT_DATE from dual;
2. 时间函数
- 显示当前日期函数:CURTIME(), CURRENT_TIME(), CURRENT_TIME
SQL:select CURTIME(), CURRENT_TIME(), CURRENT_TIME from dual;
3. 日期时间函数
- 显示当前日期函数:CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP, LOCALTIME(), LOCALTIME, LOCALTIMESTAMP(), LOCALTIMESTAMP, NOW(), SYSDATE()
SQL:select CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP, LOCALTIME(), LOCALTIME, LOCALTIMESTAMP(), LOCALTIMESTAMP, NOW(), SYSDATE() from dual;
3.1 NOW(), SYSDATE()的区别
- NOW()返回执行当前SQL语句的时间:
SQL:select NOW(), SLEEP(2), NOW() from dual;
- SYSDATE()返回执行当前函数的时间:
SQL:select SYSDATE(), SLEEP(2), SYSDATE() from dual;
3.2 SYSDATE()可以传入一个参数
- fsp 表示是否包括小数秒精度(0~6位)
SQL:select SYSDATE(), SYSDATE(6) from dual;
4. 日期时间比较过滤
- Mysql中可以直接用字符串进行比较时间大小, 只要你的日期格式是合法的就行,上述三个语句输出一样。
SQL:
select CREATED_TIME from sys_user where CREATED_TIME > '2023-01-11';
select CREATED_TIME from sys_user where CREATED_TIME > '20230111';
select CREATED_TIME from sys_user where CREATED_TIME > '2023-01-11 00:00:00';
5. 日期时间运算
- DATE_ADD()函数:日期时间增加减少
函数中INTERVAL参数后边的值为正表示日期时间增加,为负表示日期时间减少
SQL:
select DATE_ADD(NOW(), INTERVAL 1 year) from dual;
select DATE_ADD(NOW(), INTERVAL -1 year) from dual;
select DATE_ADD(NOW(), INTERVAL 1 quarter) from dual;
select DATE_ADD(NOW(), INTERVAL 1 month) from dual;
select DATE_ADD(NOW(), INTERVAL 1 week) from dual;
select DATE_ADD(NOW(), INTERVAL 1 day) from dual;
select DATE_ADD(NOW(), INTERVAL 1 hour) from dual;
select DATE_ADD(NOW(), INTERVAL 1 minute) from dual;
select DATE_ADD(NOW(), INTERVAL 1 second) from dual;
select DATE_ADD(NOW(), INTERVAL 1 microsecond) from dual;
- DATEDIFF()函数:计算两个日期差
SQL:
set @dt1 = NOW();
set @dt2 = DATE_ADD(@dt1, INTERVAL 1 minute);
set @dt2 = DATE_ADD(@dt1, INTERVAL 1 year);
select DATEDIFF(@dt2, @dt1);
- TIMEDIFF()函数:计算两个时间差
SQL:
set @dt1 = NOW();
set @dt2 = DATE_ADD(@dt1, INTERVAL 1 minute);
set @dt3 = DATE_ADD(@dt2, INTERVAL 1 year);
select TIMEDIFF(@dt3, @dt1);
6. 日期时间格式化
- DATE_FORMAT(date,format)函数:
常用:DATE_FORMAT(SYSDATE(),‘%Y-%m-%d %H:%i:%s’)
%p:PM 或AM;
%r:HH:mm:ss PM形式时间;
%W:周,周名,如Tuesday;
%w:周,0-6,0为周日;
%j:当前日期所在一年中的天数,3位(001-366)。