• 【美丽中国长江行】常德桃源:做好水文章,答对生态卷 2018-05-26
  • 农业农村部“百乡万户”驻村调研:兴农业 补短板 2018-05-26
  • 女人更年期后,要不要避孕?如何避? 2018-05-25
  • 债市风险有多大?华商系债基今年跌幅已超20% 2018-05-25
  • 供电公司采取小额诉讼手段维权 3个月不交电费将收到律师函 2018-05-25
  • 智能公交让全民体验智慧出行 2018-05-25
  • 杭州男子钓起16斤重“猛兽”,专家一看:可别随意丢弃! 2018-05-25
  • 望川十年,看见中国社会的成长 2018-05-25
  • 哈尔滨市“拔钉子”严查露天烧烤 21家冒烟摊位将被依法处罚 2018-05-24
  • 新濠天地娱乐城官网 2018-05-24
  • “澳门368足球博彩公司”足球比分及时直播李国英主持召开省深化医药卫生体制改革领导小组会议 2018-05-23
  • 马来大选92岁前总理改写政治版图 60年来政党首轮替 2018-05-23
  • 科技创新技能挑战赛聚焦冬奥主题 2018-05-23
  • 泰国试管婴儿bnh医院技术怎么样,是最好的吗?—海口论坛 2018-05-23
  • 置业指南:买高层要注意这些问题 2018-05-22
  • mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法

    栏目: 编程语言 发布于: 2014-05-02 12:32:39

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

    您可能感兴趣的文章

    • Mysql查询带单引号字符串及插入带单引号字符串需要注意问题
    • php 输出昨天,今天,明天是星期几的方法
    • mysql如何导出表中的某个字段的数据
    • 总结mysql服务器查询慢原因与解决方法
    • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
    • php 获取今天明天昨天时间戳的 N 种方法总结
    • 程序员和测试员之间的经典对白。这些是国外程序员总结分享的,称其上全球通用?
    • 大流量网站该如何实现优化服务器、静态化、数据库优化、负载均衡以实现高负载
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
    IT技术书籍推荐:
    JavaScript高级程序设计(第3版)
    JavaScript高级程序设计(第3版)
    泽卡斯 (Zakas. Nicholas C.) (作者), 李松峰 (译者), 曹力 (译者)
    《JavaScript高级程序设计(第3版)》是JavaScript超级畅销书的最新版。ECMAScript 5和HTML5在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript增添了很多适应未来发展的新特性?!禞avaScript高级程序设计(第3版)》这一版除增加5章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一。全书从JavaScript语言实现的各个组成部分——语言核心、DOM、BOM、事件模型讲起,深入浅出地探讨了面向对象编程、Ajax与Comet服务器端通信,HTML5表单、媒体、Canvas(包括WebGL)及Web Workers、地理定位、跨文档传递消息、客户端存储(包括IndexedDB)等新API,还介绍了离线应用和与维护、性能、部署相关的最佳开发实践?!禞avaScript高级程序设计(第3版)》附录展望了未来的API和ECMAScript Harmony规范。