• 3名中国游客在瑞典遭粗暴对待 外交部敦促瑞方重视中方关切 2018-10-21
  • 国足20-0大胜!女梅西6球,女C罗轰5球,男足才赢19-0 2018-10-21
  • 消协提醒:春节预订酒店有技巧 预付卡消费需谨慎 2018-10-20
  • 陈敏尔唐良智会见传化集团董事长徐冠巨 2018-10-20
  • 扫黑除恶利剑高悬 前8月榕查处违法采砂案件93起 2018-10-20
  • 不能让所谓的收视率愚弄观众 2018-10-18
  • 新希望!中超19岁新星半年增重十斤 曾戏耍恒大两国脚 2018-10-17
  • 迎丰收 晒丰收 庆丰收 2018-10-15
  • “捂脸表情”被注册成商标?申请人不认为商标侵权 2018-10-15
  • 战巡南海、绕岛巡航…空军有“飞出去”的主心骨 2018-10-14
  • 幼儿园要求家长写一万字读后感:不能这样玩家长|幼儿园|家长-教育时讯 2018-10-13
  • 中国故宫文物展在希腊举行 2018-10-13
  • 車·晓 第26期 車企官方降价真相幾何? 2018-10-12
  • 宝沃总裁杨嵩:曾和奔驰宝马同水平 已不能同日而语 2018-10-11
  • 新时代党员干部要有更大的担当和作为 2018-10-10
  • 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规范。