文档章节

mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

Boss-x
 Boss-x
发布于 2017/04/11 17:26
字数 814
阅读 19
收藏 0

mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结:
话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下:

复制代码代码如下:


select * from `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');

 

或者:

复制代码代码如下:


select * from `article` where to_days(date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d')) = to_days(now());

假设以上表的add_time字段的存储类型是DATETIME类型或者TIMESTAMP类型,则查询语句也可按如下写法:
查询今天的信息记录:

复制代码代码如下:


select * from `article` where to_days(`add_time`) = to_days(now());


查询昨天的信息记录:

复制代码代码如下:


select * from `article` where to_days(now()) – to_days(`add_time`) <= 1;


查询近7天的信息记录:

复制代码代码如下:


select * from `article` where date_sub(curdate(), INTERVAL 7 DAY) <= date(`add_time`);


查询近30天的信息记录:

复制代码代码如下:


select * from `article` where date_sub(curdate(), INTERVAL 30 DAY) <= date(`add_time`);


查询本月的信息记录:

复制代码代码如下:


select * from `article` where date_format(`add_time`, ‘%Y%m') = date_format(curdate() , ‘%Y%m');


查询上一月的信息记录:

复制代码代码如下:


select * from `article` where period_diff(date_format(now() , ‘%Y%m') , date_format(`add_time`, ‘%Y%m')) =1;


对上面的SQL语句中的几个函数做一下分析:
(1)to_days
就像它的名字一样,它是将具体的某一个日期或时间字符串转换到某一天所对应的unix时间戳,如:

 

 

复制代码代码如下:


mysql> select  to_days('2010-11-22 14:39:51');      
 +--------------------------------+                                                        
| to_days('2010-11-22 14:39:51') |
+--------------------------------+
|                         734463 |
+--------------------------------+

 

mysql> select  to_days('2010-11-23 14:39:51');
+--------------------------------+
| to_days('2010-11-23 14:39:51') |
+--------------------------------+
|                         734464 |
+--------------------------------+

 

 

可以看出22日与23日的差别就是,转换之后的数增加了1,这个粒度的查询是比较粗糙的,有时可能不能满足我们的查询要求,那么就需要使用细粒度的查询方法str_to_date函数了,下面将分析这个函数的用法。

提醒:
(1)to_days() 不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。因此对于1582 年之前的日期(或许在其它地区为下一年 ), 该函数的结果实不可靠的。
 
(2)MySQL"日期和时间类型"中的规则是将日期中的二位数年份值转化为四位。因此对于'1997-10-07'和'97-10-07'将被视为同样的日期:

复制代码代码如下:


mysql> select to_days('1997-10-07'), to_days('97-10-07'); 
    -> 729669, 729669

 

(2)str_to_date
这个函数可以把字符串时间完全的翻译过来,如:

复制代码代码如下:


mysql> select str_to_date("2010-11-23 14:39:51",'%Y-%m-%d %H:%i:%s');
 
+--------------------------------------------------------+
| str_to_date("2010-11-23 14:39:51",'%Y-%m-%d %H:%i:%s') |
+--------------------------------------------------------+
| 2010-11-23 14:39:51                                    |
+--------------------------------------------------------+

 

 

 


具体案例操作如下:

复制代码代码如下:


select str_to_date(article.`add_time`,'%Y-%m-%d %H:%i:%s')
from article
where str_to_date(article.`add_time`,'%Y-%m-%d %H:%i:%s')>='2012-06-28 08:00:00' and str_to_date(article.`add_time`,'%Y-%m-%d %H:%i:%s')<='2012-06-28 09:59:59';

© 著作权归作者所有

Boss-x
粉丝 4
博文 40
码字总数 17588
作品 0
杭州
后端工程师
私信 提问
mysql 查询当天数据

mysql查询今天、昨天、7天、近30天、本月、上一月 数据 今天 昨天 7天 近30天 本月 上一月 查询本季度数据 查询上季度数据 查询本年数据 查询上年数据

非常夏日i
2017/10/12
18
0
ySQL中获取天、周、月等数据

MySQL中获取天、周、月等数据 1.今天 2.昨天 3.近7天 4.近30天 5.本月 6.上一月 7.查询本季度数据 8.查询上季度数据 9.查询本年数据 10.查询上年数据 11.查询当前这周的数据 查询本周所有的数...

孟飞阳
10/11
13
0
mysql查询今天、昨天、7天、近30天、本月、上一月 数据

mysql查询今天、昨天、7天、近30天、本月、上一月 数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAY...

罗盛力
2013/01/26
358
0
【SQL之查询】MySQL查询今天、昨天、上周、近30天、去年等的数据的方法

一、MySQL查询今天、昨天、上周、近30天、去年等的数据的方法: 删除建立时间超过3天的订单记录 delete 订单表 where datediff( dd, orderaddtime, getdate() ) > 3 用函数datediff() datedi...

凯文加内特
2017/10/20
192
0
mysql查询今天、昨天、上周

今天 select from 表名 where todays(时间字段名) = todays(now()); 昨天 SELECT FROM 表名 WHERE TODAYS( NOW( ) ) - TODAYS( 时间字段名) <= 1 7天 SELECT FROM 表名 where DATE_SUB(CURDA......

干干
2017/11/01
7
0

没有更多内容

加载失败,请刷新页面

加载更多

JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
15分钟前
29
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
24分钟前
4
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
27分钟前
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
33分钟前
4
0
Apache Kudu 不能删除不存在的数据

使用Apache Kudu客户端,对KafkaConnect Sink 进行扩展。 使用的Apache Kudu 的Java 客户端。突然有天发现作业无法提交,一直报错。 后来才发现这是Kudu自身的一种校验机制。为了忽略这种校验...

吐槽的达达仔
43分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部