MySQL中常用的关于时间的SQL语句

MySQL中常用的关于时间的SQL语句

在数据库查询过程中,我们经常使用到对时间的操作。下面我们看一看mysql中有哪些常用的按时间查询的sql语句吧。

假设MySQL数据库表中时间为add_time,类型为datatime

查询当天

1
select * from my_table where to_days('add_time`) = to_days(now());

查询昨天

1
select * from my_table where to_days(now())-to_days('add_time')=1;

查询最近7天

1
select * from my_table where date_sub(curdata(),INTERVAL 7 DAY)<=DATE('add_time');

或者

1
select * from my_table where curdata()-INTERVAL 7 DAY <= DATE('add_time);

查询最近30天

1
select * from my_table where date_sub(curdata(),INTERVAL 30 DAY)<=DATE('add_time');

或者

1
select * from my_table where curdata()-INTERVAL 30 DAY <= DATE('add_time');

查询截止到当前本周

1
2
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d')) = YEARWEEK(now());#默认从周日开始到周六
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d'),1) = YEARWEEK(now(),1);#设置为从周一开始到周日

查询上周数据

1
SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d')) = YEARWEEK(now())-1;

查询截止到当前本月

1
SELECT * FROM `article` WHERE date_format(`add_time`, '%Y%m') = date_format(curdate() , '%Y%m');

查询上一月

1
SELECT * FROM `article` WHERE period_diff(date_format(now() , '%Y%m') , date_format(`add_time`, '%Y%m')) =1;

其他

将时间戳(Unixtime)转换为日期(datatime

FROM_UNIXTIME()

将日期(datatime)转换为时间戳(Unixtime

UNIX_TIMESTAMP()


MySQL中常用的关于时间的SQL语句
https://www.shaohang.xin/2018/08/21/technical/mysql/MySQLDateOp/
作者
少航
发布于
2018年8月21日
许可协议