mysql查询本月数据sql怎么写

mysql查询本月数据sql怎么写,第1张

首先要考虑给数据库减压,意思就是让数据库做最简单的事情。你可以把条件在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值:

下面是函数的参数说明:

%S, %s 两位数字形式的秒( 00,01, , 59)

%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 d

FROM

(

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

然后你应该知道了吧

SELECT

    dd,

    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 按月份分类统计 查询语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9328684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存