首先要考虑给数据库减压,意思就是让数据库做最简单的事情。你可以把条件在php里边组装好,然后让mysql只单一的执行查询就好了,php的时间代码给你贴一下吧
';
//php获取今日开始时间戳和结束时间戳
$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
echo"今日开始时间戳和结束时间戳",'开始:',$beginToday,'结束:',$endToday,'
';
echo"今日开始时间:",date("Y-m-dH:i:s",$beginToday),'
';
echo"今日结束时间:",date("Y-m-dH:i:s",$endToday),'
';
echo'';
//php获取昨日起始时间戳和结束时间戳
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
echo"昨日开始时间戳和结束时间戳",'开始:',$beginYesterday,'结束:',$endYesterday,'
';
echo"昨日开始时间:",date("Y-m-dH:i:s",$beginYesterday),'
';
echo"昨日结束时间:",date("Y-m-dH:i:s",$endYesterday),'
';
echo'';
//php获取上周起始时间戳和结束时间戳
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
echo"上周开始时间戳和结束时间戳",'开始:',$beginLastweek,'结束:',$endLastweek,'
';
echo"上周开始时间:",date("Y-m-dH:i:s",$beginLastweek),'
';
echo"上周结束时间:",date("Y-m-dH:i:s",$endLastweek),'
';
echo'';
//php获取本月起始时间戳和结束时间戳
$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));
echo"本月开始时间戳和结束时间戳",'开始:',$beginThismonth,'结束:',$endThismonth,'
';
echo"本月开始时间:",date("Y-m-dH:i:s",$beginThismonth),'
';
echo"本月结束时间:",date("Y-m-dH:i:s",$endThismonth),'
';
>
一、打开MySQL工具,我用的是Navicat Premium
二、新建查询,输入sql命令
举例如下:
分组查询
1、年度分组
2、月度分组
3、先按年度分组,再按月度分组
4、按年月分组
SELECT count(ArticleId), date_format(FROM_UNIXTIME( `BlogCreateTime`),'%y%m') sdate FROM `blog_article` group by sdate
结果:
count( ArticleId ) sdate
17 0901
11 0902
5 0903
6 0904
2 0905
1 0907
12 0908
6 0909
11 0910
3 0911
其他方法参考:
我想做一个统计,数据库是mysql,统计出每天,每周,每月的记录数
建表的时候加个字段表示日期,然后查sql手册
select count() from `table` where `date`='{某天}'
select count() from `table` where date_format(`date`,'%V')='{某周}'
select count() from `table` where date_format(`date`,'%c')='{某月}'
另一种方法:
select count( ) from projects where editdate >= '2007-11-9 00:00:00' and editdate <=
'2007-11-9 24:00:00';
第三种方法:
每周的
SQL codeselect count() as cnt,week(editdate) as weekflg from projects where year(editdate)
=2007 group by weekflg
每月
SQL codeselect count() as cnt,month(editdate) as monthflg from projects where year
(editdate)=2007 group by monthflg
每天
SQL codeselect count() as cnt from projects group by date(editdate)
mysql中DATE_FORMAT(date, format)函数可根据format字符串格式化日期或日期和时间值date,返回结果
串。
也可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式
化date值:
下面是函数的参数说明:
%i 两位数字形式的分( 00,01, , 59)
%H 两位数字形式的小时,24 小时(00,01, , 23)
%h, %I 两位数字形式的小时,12 小时(01,02, , 12)
%k 数字形式的小时,24 小时(0,1, , 23)
%l 数字形式的小时,12 小时(1, 2, , 12)
%T 24 小时的时间形式(hh : mm : s s)
%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
%p AM 或P M
%W 一周中每一天的名称( Sunday, Monday, , Saturday)
%a 一周中每一天名称的缩写( Sun, Mon, , Sat)
%d 两位数字表示月中的天数( 00, 01, , 31)
%e 数字形式表示月中的天数( 1, 2, , 31)
%D 英文后缀表示月中的天数( 1st, 2nd, 3rd, )
%w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, , 6=Saturday)
%j 以三位数字表示年中的天数( 001, 002, , 366)
% U 周(0, 1, 52),其中Sunday 为周中的第一天
%u 周(0, 1, 52),其中Monday 为周中的第一天
%M 月名(January, February, , December)
%b 缩写的月名( January, February, , December)
%m 两位数字表示的月份( 01, 02, , 12)
%c 数字表示的月份( 1, 2, , 12)
%Y 四位数字表示的年份
%y 两位数字表示的年份
%% 直接值“%”
SELECT count( ) , left( creattime, 7 ) AS left7time
FROM register
WHERE `creattime` LIKE '2012%'
GROUP BY lefttime
oracle的,算是抛砖引玉
SELECT SUBSTR(add_months(TRUNC(sysdate,'yyyy'), ROWNUM +(to_number(TO_CHAR(sysdate,'mm'))-6-1)),0,7) MONTH
FROM DUAL
CONNECT BY ROWNUM <=6;
执行结果:
执行结果:
执行结果:
第一列的周数据,表示每一年的第几周,从第一周开始计算起。
执行结果:
执行结果:
执行结果:
SELECT ADDDATE(yfirst, xd - 1) as d,xd as b
FROM
(
SELECT @xi:=@xi+1 as d from
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) xc1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) xc2,
(SELECT 1 ) xc3,
(SELECT @xi:=0) xc0
) X,
(
SELECT '2018-11-01' - INTERVAL DAY('2018-11-01') - 1 DAY AS first,
DAY(LAST_DAY('2018-11-01')) AS last) Y
WHERE xd <= ylast
或者
SELECT ADDDATE(yfirst, xd - 1) as dFROM
(
SELECT 1 AS d UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 9 UNION ALL
SELECT 10 UNION ALL
SELECT 11 UNION ALL
SELECT 12 UNION ALL
SELECT 13 UNION ALL
SELECT 14 UNION ALL
SELECT 15 UNION ALL
SELECT 16 UNION ALL
SELECT 17 UNION ALL
SELECT 18 UNION ALL
SELECT 19 UNION ALL
SELECT 20 UNION ALL
SELECT 21 UNION ALL
SELECT 22 UNION ALL
SELECT 23 UNION ALL
SELECT 24 UNION ALL
SELECT 25 UNION ALL
SELECT 26 UNION ALL
SELECT 27 UNION ALL
SELECT 28 UNION ALL
SELECT 29 UNION ALL
SELECT 30 UNION ALL
SELECT 31
) x,
(
SELECT '2018-11-01' - INTERVAL DAY('2018-11-01') - 1 DAY AS first,
DAY(LAST_DAY('2018-11-01')) AS last) y
WHERE xd <= ylast
然后你应该知道了吧
SELECTdd,
count(tid)
FROM
(
-- 这里贴前面两段代码中的任意一段
) d
LEFT JOIN
table t ON tday = dd -- 这个table是你要查的数据表
GROUP BY
dd
SELECT COUNT() AS total FROM `logs` WHERE FROM_UNIXTIME(`create_time`,'%Y-%m')='2015-06'
以上就是关于mysql查询本月数据sql怎么写全部的内容,包括:mysql查询本月数据sql怎么写、mysql 自动分月统计、mysql 按月份分类统计 查询语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)