使用Mysql根据时间查询数据
- 按日期、时间查询
//按时间查询在这个时间段的数据
SELECT * FROM user WHERE create_time BETWEEN
'2020-04-16 00:00:00' AND '2020-04-20 00:00:00';
// 按日期查询2020-04-16 以后的数据
SELECT * FROM user WHERE date(create_time)>='2020-04-16';
//按时间查询20:00:00的数据
SELECT * FROM user WHERE time(create_time)='20:00:00';
- 查询最近一条数据
SELECT * FROM user ORDER BY create_time DESC LIMIT 1;
- 查询今天的数据
SELECT * FROM user WHERE date_format(create_time,'%Y-%m-%d') = date_format(now(), '%Y-%m-%d');
- 查询昨天的数据
SELECT * FROM user WHERE date(create_time) = date(curdate()-1);
- 查询一个星期内的数据
SELECT * FROM user WHERE date_sub(curdate(),interval 7 day) <= date(create_time) ORDER BY create_time DESC;
- 查询一个月内的数据
select * from user where date_sub(curdate(),interval 1 month) <= date(create_time) ORDER BY create_time DESC;
mysql时间函数总结
// 查询现在 // 格式为YYYY-MM-DD
select now();
// 查询当天日期 //格式为YYYY-MM-DD
select curdate();
// 查询当天0点 //格式为YYYY-MM-DD HH:mm:ss
select date_format(curdate(),’%Y-%m-%d %H:%i:%s’);
// 查询当天早上9点 //格式为YYYY-MM-DD HH:mm:ss
select date_add(curdate(), interval 9 hour);
// 查询昨天 date_sub()是减少 //格式为YYYY-MM-DD
select date_sub(curdate(),interval 1 day);
// 查询昨天早上9点 date_add()是添加 //格式为YYYY-MM-DD HH:mm:ss
select date_add(date_sub(curdate(),interval 1 day),interval 9 hour);
有的时候我们数据库存的时间是时间戳,那怎么办呢? mysql为我们提供了两个函数:
// 将时间戳转换为日期
select from_unixtime(1588064012);
// 将指定的日期或者日期字符串转换为时间戳
select unix_timestamp('2020-04-20 18:00:00');