1.DATE_SUB(date,INTERVAL expr unit)
返回date减去一个时间段后的日期,DATE_SUB()返回的是格式化后的时间:yyyy-MM-dd
例子:查询小于当前时间一个月的数据
SELECT * from v2_u_recharge_order WHERE create_at < DATE_SUB(CURDATE(),INTERVAL 1 MONTH)
MySQL中的日期间隔类型如下表所示:
类型(type值) | 含义 | expr表达式的形式 |
---|---|---|
YEAR | 年 | YY |
MONTH | 月 | MM |
DAY | 日 | DD |
HOUR | 时 | hh |
MINUTE | 分 | mm |
SECOND | 秒 | ss |
YEAR_MONTH | 年和月 | YY和MM之间用任意符号隔开 |
DAY_HOUR | 日和小时 | DD和hh之间用任意符号隔开 |
DAY_MINUTE | 日和分钟 | DD和mm之间用任意符号隔开 |
DAY_SECOND | 日和秒钟 | DD和ss之间用任意符号隔开 |
HOUR_MINUTE | 时和分 | hh和mm之间用任意符号隔开 |
HOUR_SECOND | 时和秒 | hh和ss之间用任意符号隔开 |
MINUTE_SECOND | 分和秒 | mm和ss之间用任意符号隔开 |
2.DATE_ADD(date,INTERVAL expr unit)
同上返回date加一个时间段后的日期
例子:对某个日期加上几天几小时几分钟几秒钟
SELECT * from v2_u_recharge_order WHERE create_at < date_add('2019-09-09 23:59:59',INTERVAL '2 2:1:1' DAY_SECOND);
3.时间戳与时间的转换
UNIX_TIMESTAMP() 时间转时间戳
FROM_UNIXTIME(unix_timestamp) 时间戳转时间
4.DATEDIFF() 函数返回两个日期之间的天数。
例子:查询当天
传统:
SELECT * FROM v2_u_recharge_order WHERE DATE_FORMAT(create_at,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')");
DATEDIFF()写法:
SELECT * FROM `t` WHERE DATEDIFF(create_at,NOW()) =0;
注:返回当天时间的mysql函数有CURDATE()、CURRENT_DATE()、CURRENT_DATE、NOW()几种;其中NOW()获取的日期格式为0000-00-00 00:00:00的时间;CURDATE()、CURRENT_DATE()、CURRENT_DATE是获取日期格式为0000-00-00的时间,所以返回的时间无时分秒;