mysql查询当天,昨天,近7天,近30天,本月,上一月数据语句

话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下:

 代码如下 复制代码

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

或者:

 代码如下 复制代码

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

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

查询今天的信息记录:

 代码如下 复制代码

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

查询昨天的信息记录:

 代码如下 复制代码

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

查询近7天的信息记录:

 代码如下 复制代码

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

查询近30天的信息记录:

 代码如下 复制代码

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

查询本月的信息记录:

 代码如下 复制代码

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;

对上面的SQL语句中的几个函数做一下分析:

(1)to_days

就像它的名字一样,它是将具体的某一个日期或时间字符串转换到某一天所对应的unix时间戳,如:

 代码如下 复制代码

01 mysql> select  to_days(’2010-11-22 14:39:51′);

02  +——————————–+

03 | to_days(’2010-11-22 14:39:51′) |

04 +——————————–+

05 |                         734463 |

06 +——————————–+

07 

08 mysql> select  to_days(’2010-11-23 14:39:51′);

09 +——————————–+

10 | to_days(’2010-11-23 14:39:51′) |

11 +——————————–+

12 |                         734464 |

13 +——————————–+

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

提醒:

(1)to_days() 不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。因此对于1582 年之前的日期(或许在其它地区为下一年 ), 该函数的结果实不可靠的。

(2)MySQL”日期和时间类型”中的规则是将日期中的二位数年份值转化为四位。因此对于’1997-10-07′和’97-10-07′将被视为同样的日期:

 代码如下 复制代码

1 mysql> select to_days(’1997-10-07′), to_days(’97-10-07′);

3 -> 729669, 729669

(2)str_to_date

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

 代码如下 复制代码

1 mysql> select str_to_date(“2010-11-23 14:39:51″,’%Y-%m-%d %H:%i:%s’);

3 +——————————————————–+

4 | str_to_date(“2010-11-23 14:39:51″,’%Y-%m-%d %H:%i:%s’) |

5 +——————————————————–+

6 | 2010-11-23 14:39:51                                    |

7 +——————————————————–+

具体案例操作如下:

 代码如下 复制代码

1 select str_to_date(article.`add_time`,’%Y-%m-%d %H:%i:%s’)

2 from article

3 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′;

时间: 2024-09-23 21:40:57

mysql查询当天,昨天,近7天,近30天,本月,上一月数据语句的相关文章

mysql查询当天所有数据sql语句

  mysql查询当天的所有信息: 代码如下 select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) and day(regdate)=day(now()) 这个有一些繁琐,还有简单的写法: 代码如下 select * from table where date(regdate) = curdate(); 另一种写法没测试过 查询当天的记录 代码如下 select * from hb_a

php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)

php.mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳) //其中 video 是表名: //createtime 是字段: // //数据库time字段为时间戳 // //查询当天: $start = date('Y-m-d 00:00:00'); $end = date('Y-m-d H:i:s'); SELECT * FROM `table_name` WHERE `time` >= unix_timestamp( '$start' ) AND `time` <= uni

mysql学习笔记查询今天、昨天、7天、近30天、本月、上一月 数据

查询 今天  代码如下 复制代码 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天  代码如下 复制代码 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= 1 7天  代码如下 复制代码 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天  代码如下

MYSQL查询今天、昨天、7天、近30天、本月、上一月 数据

-- 查询30天 select DATE_SUB(CURDATE(), INTERVAL 30 DAY) frm table; 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY

mysql获取当天,昨天,本周,本月,上周,上月的起始时间

-- 今天select DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS '今天开始';select DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') AS '今天结束'; -- 昨天select DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AS '昨天开始';select DATE_FORMAT( DATE_SUB(CURDATE(),

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

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')

习近平、李克强,贵州,大数据!

近日两则新闻,非常重要! 国家总书记和总理几乎同时与"大数据"相关,习总书记说"贵州发展大数据确实有道理",李总理说"建立统一数据平台是建设现代化国家的基础",素材分别摘自新华网.中国政府网.新华社.数据观. 习近平考察贵州:贵州发展大数据确实有道理 习近平:"我听懂了,贵州发展大数据确实有道理" 近年来,贵州省抢抓机遇,利用当地生态环境好.气候凉爽等优势发展大数据产业,取得一定成效.17日上午,总书记来到贵阳市大数据广场,走

mysql查询学生成绩及各科成绩的排名

问题描述 mysql查询学生成绩及各科成绩的排名 学生表student有主键id,学号stuNum,姓名stuName, 课程表course有课程名称主键id,cname 成绩表sc有主键id,学生表id,课程表id 班级表class有主键id,班级名称cname,外键gid关联年纪表的id主键 年纪表grade有主键id,年纪名称gname 年纪-课程表gc有主键id,年纪表gid,课程表cid 所有的表主键id都是uuid 现在查询一个学生的各科成绩以及每科的成绩在班级和在年纪的排名,(如可

如何处理MYSQL查询

    6.6 处理查询    我们已经知道了如何开始和结束与服务器的会话,现在应该看看如何控制会话.本节介绍了如何与服务器通信以处理查询.执行的每个查询应包括以下几步:    1) 构造查询.查询的构造取决于查询的内容-特别要看是否含有二进制数据.    2) 通过将查询发送到服务器执行来发布查询.    3) 处理查询结果.这取决于发布查询的类型.例如, SELECT 语句返回数据行等待处理,INSERT 语句就不这样.构造查询的一个要素就是使用哪个函数将查询发送到服务器.较通用的发布查询例