MySQL中常用的关于时间的SQL语句
在数据库查询过程中,我们经常使用到对时间的操作。下面我们看一看mysql中有哪些常用的按时间查询的sql语句吧。
假设MySQL数据库表中时间为add_time
,类型为datatime
。
查询当天
1
| select * from my_table where to_days('add_time`) = to_days(now());
SQL
|
查询昨天
1
| select * from my_table where to_days(now())-to_days('add_time')=1;
SQL
|
查询最近7天
1
| select * from my_table where date_sub(curdata(),INTERVAL 7 DAY)<=DATE('add_time');
SQL
|
或者
1
| select * from my_table where curdata()-INTERVAL 7 DAY <= DATE('add_time);
SQL
|
查询最近30天
1
| select * from my_table where date_sub(curdata(),INTERVAL 30 DAY)<=DATE('add_time');
SQL
|
或者
1
| select * from my_table where curdata()-INTERVAL 30 DAY <= DATE('add_time');
SQL
|
查询截止到当前本周
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);#设置为从周一开始到周日
SQL
|
查询上周数据
1
| SELECT * FROM `article` WHERE YEARWEEK(date_format(`add_time`,'%Y-%m-%d')) = YEARWEEK(now())-1;
SQL
|
查询截止到当前本月
1
| SELECT * FROM `article` WHERE date_format(`add_time`, '%Y%m') = date_format(curdate() , '%Y%m');
SQL
|
查询上一月
1
| SELECT * FROM `article` WHERE period_diff(date_format(now() , '%Y%m') , date_format(`add_time`, '%Y%m')) =1;
SQL
|
其他
将时间戳(Unixtime
)转换为日期(datatime
)
FROM_UNIXTIME()
将日期(datatime
)转换为时间戳(Unixtime
)
UNIX_TIMESTAMP()