根据日期统计sql语句

根据日期统计sql语句

今天

SELECT 统计字段 name ,COUNT(1) value 
FROMWHERE TO_DAYS(日期字段) = TO_DAYS(now()) 
GROUP BY name;

昨天

SELECT 统计字段 name ,COUNT(1) value 
FROMWHERE TO_DAYS( now( ) ) - TO_DAYS( 日期字段) <= 1 
GROUP BY name;

本周

SELECT 统计字段,时间字段 
FROMWHERE YEARWEEK(date_format(时间字段,'%Y%m%d')) = YEARWEEK(now());

近7天(统计每天)

SELECT 统计字段  name ,COUNT(1) value,DATE_FORMAT(日期字段,'%Y%m%d') date 
FROMWHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(日期字段)
GROUP BY  name ,date
ORDER BY  name ,date asc

上周

SELECT 统计字段,时间字段 
FROMWHERE YEARWEEK(date_format(时间字段,'%Y%m%d'))= YEARWEEK(now())-1;

本月

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

上月

SELECT 查询字段 
FROMWHERE PERIOD_DIFF( DATE_FORMAT( now() , '%Y%m' ) , DATE_FORMAT( 日期字段, '%Y%m' ) ) =1

近6个月

SELECT 查询字段,时间字段
FROMWHERE 时间字段 between date_sub(now(),interval 6 month) and now();

近12个月(统计每月)

SELECT 统计字段 name, DATE_FORMAT(时间字段,'%Y%m') date,COUNT(1) value
FROMWHERE 1 = 1
GROUP BY date,name
HAVING date < DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 MONTH ), '%Y%m' )
AND date > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 12 MONTH ), '%Y%m' )
ORDER BY name,date asc

本季度

SELECT * 
FROMWHERE  QUARTER(日期字段)=QUARTER(now());

上季度

SELECT * 
FROMWHERE QUARTER(日期字段)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

本年度

SELECT * 
FROMWHERE YEAR(日期字段)=YEAR(NOW());

上一年

SELECT * 
FROMWHERE YEAR(日期字段)=YEAR(date_sub(now(),interval 1 year));

你可能感兴趣的:(笔记,mysql,数据库)