zoukankan      html  css  js  c++  java
  • MySQL查询今天/本周/上周/本月/上个月份的数据

    MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周、上周、本月、上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看。

    查询当前今天的数据 
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) =date_format(now(),'%Y-%m-%d');


    查询当前这周的数据 
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());


    查询上周的数据
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;


    查询当前月份的数据
    select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')


    查询距离当前现在6个月的数据

    select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();


    查询上个月的数据
    select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
     
    select * from `user` where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');


    select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())


    select * 
    from user 
    where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())


    select * 
    from [user] 
    where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now())
    and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())


    select * 
    from [user] 
    where pudate between 上月最后一天
    and 下月第一天

    ############################

    默认情况下, 这个 yearweek、WEEK ( 日期 )  是 每把周日,作为一周的开始。

    有的是周日开始,有的是周一开始。而工作中有的时候每周是从周六开始算的,有些数据需要按周统计,那么那种方式比较好呢?

     
    通过下面的研究,认为yearweek()是适合的,它返回的是 201311这样的格式。若要把周六当做新的一周的开始,那么就是:
     
    select yearweek(DATE_ADD(now(), INTERVAL 1 DAY));
     
    mysql> select yearweek(DATE_ADD(now(), INTERVAL 1 DAY));
    +-------------------------------------------+
    | yearweek(DATE_ADD(now(), INTERVAL 1 DAY)) |
    +-------------------------------------------+
    |                                    201311 |
    +-------------------------------------------+
    1 row in set
     
    mysql> select yearweek(now());
    +-----------------+
    | yearweek(now()) |
    +-----------------+
    |          201310 |
    +-----------------+
    1 row in set
     
    mysql> 

    select yearweek(now() - INTERVAL 1 DAY)    从周1开始本周计算

    select yearweek('2015-02-02 11:12:00' - INTERVAL 1 DAY) 

    ############################

    摘自:http://hideto.javaeye.com/blog/255816

    当前week的第一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY)

    当前week的最后一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) – 5 DAY)

    前一week的第一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY)

    前一week的最后一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY)

    前两week的第一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY)

    前两week的最后一天:
    select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY)
    当前month的第一天:
    SELECT concat(date_format(LAST_DAY(now()),’%Y-%m-’),’01′)

    当前month的最后一天:
    SELECT LAST_DAY(now())

    前一month的第一天:
    SELECT concat(date_format(LAST_DAY(now() – interval 1 month),’%Y-%m-’),’01′)

    前一month的最后一天:
    SELECT LAST_DAY(now() – interval 1 month)

    前两month的第一天:
    SELECT concat(date_format(LAST_DAY(now() – interval 2 month),’%Y-%m-’),’01′)

    前两month的最后一天:
    SELECT LAST_DAY(now() – interval 2 month)
    当前quarter的第一天:
    select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),’%Y-%m-’),’01′)

    当前quarter的最后一天:
    select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month)

    前一quarter的第一天:
    select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-6 month),’%Y-%m-’),’01′)

    前一quarter的最后一天:
    select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-4 month)

    前两quarter的第一天:
    select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-9 month),’%Y-%m-’),’01′)

    前两quarter的最后一天:
    select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-7 month)

    UNIX时间戳转换为日期用函数: FROM_UNIXTIME()

    1. select FROM_UNIXTIME(1156219870);  

    日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()

    1. Select UNIX_TIMESTAMP(’2006-11-04 12:23:00′); 

    ########################

    今天

    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天

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

    本月

    SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

    上一月

    SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1

    #查询本季度数据
    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());
    #查询上季度数据
    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
    #查询本年数据
    select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());
    #查询上年数据
    select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

    查询当前这周的数据 
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

    查询上周的数据
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;//国外一周是从周日到周六来算的  SELECT * FROM ordersrecord WHERE         YEARWEEK(ordertime,1) =YEARWEEK(date_sub(curdate(),interval 7 day),1)

           

    查询当前月份的数据
    select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')

    查询距离当前现在6个月的数据
    select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();

    查询上个月的数据
    select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

    select * from ` user ` where DATE_FORMAT(pudate, ' %Y%m ' ) = DATE_FORMAT(CURDATE(), ' %Y%m ' ) ;

    select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())

    select *  
    from user  
    where MONTH (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = MONTH (now())

    select *  
    from [ user ]  
    where YEAR (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = YEAR (now())
    and MONTH (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = MONTH (now())

    select *  
    from [ user ]  
    where pudate between 上月最后一天
    and 下月第一天

    where   date(regdate)   =   curdate();

    select   *   from   test   where   year(regdate)=year(now())   and   month(regdate)=month(now())   and   day(regdate)=day(now())

    SELECT date( c_instime ) ,curdate( )
    FROM `t_score`
    WHERE 1
    LIMIT 0 , 30

    摘自:http://blog.csdn.net/zzhongcy/article/details/43016685

  • 相关阅读:
    C语言volatile关键字的用法
    UDP广播包
    进程和线程的区别
    Unix/Linux进程间通信
    虚拟空间,malloc
    自我介绍
    java初始化顺序
    java 队列基础操作
    java IO基础操作
    Python中的Tab补全功能添加
  • 原文地址:https://www.cnblogs.com/antyi/p/6177818.html
Copyright © 2011-2022 走看看