Mysql query today/yesterday/15 days ago/last month/last year/last week daily and other functions

 

 

There are many ways to query MySQL. The MySQL query introduced below is to query the data of this week, last week, this month, and last month. If you are interested in MySQL query, you may wish to take a look.

Query the current data of today 
SELECT name,submittime FROM enterprise WHERE  YEARWEEK(date_format(submittime,'%Y-%m-%d')) = date_format (now(), '%Y-%m-%d' ) ;


query Current week's data 
SELECT name,submittime FROM enterprise WHERE  YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()) ;


Query last week's data
SELECT name,submittime FROM enterprise WHERE  YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1 ;


Query the data of the current month
select name,submittime from enterprise where  date_format(submittime,'%Y-%m ')=date_format(now(),'%Y-%m'



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 last day of previous month
and first day of next month

 

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

By default, the  yearweek, WEEK (date) is every Sunday, as the start of the week.

 

 

Some start on Sunday, some start on Monday. In some cases, the weekly calculation starts from Saturday, and some data needs to be counted on a weekly basis. So which method is better?

 
Through the following research, think yearweek() is suitable, it returns a format like 201311. To think of Saturday as the start of a new week, then:
 
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) Counts the week from week 1

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

 

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

 

Taken from: http://hideto.javaeye.com/blog/255816

The first day of the current week:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY)

The last day of the current week:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY)

The first day of the previous week:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY)

Last day of the previous week:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY)

The first day of the first two weeks:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY)

The last day of the first two weeks:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY)
The first day of the current 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

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326333637&siteId=291194637