这篇文章主要对MySQL按月份统计数据介绍:表finance有俩个字段如下date datemoney double(15,2)下面需要对表finance的2010年财务数据,按月进行统计
selectDATE_FORMAT(date,'%Y-%m')asmonth,sum(money)asmoneyfromfinance
whereDATE_FORMAT(date,'%Y')=2010groupbymonthorderbymonth
下面是按周统计
查看MySQL的manual 手册
%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
其中
1如果周一为一周的第一天,则(小写) DATE_FORMAT(date,’%x %v’)
2如果周日为一周的第一天,则(大写) DATE_FORMAT(date,’%X %V’)
Sql代码
selectDATE_FORMAT(date,'%x年-第%v周')asweek,sum(money)asmoneyfromfinance_base
whereDATE_FORMAT(date,'%Y')=2010groupbyweek
其中需要注意的地方是,如果日期是时间戳存储的,需要用这个函数FROM_UNIXTIME用法:
FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format)
%a
工作日的缩写名称 (Sun..Sat)
%b
月份的缩写名称 (Jan..Dec)
%c
月份,数字形式(0..12)
%D
带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, …)
%d
该月日期, 数字形式 (00..31)
%e
该月日期, 数字形式(0..31)
%f
微秒 (000000..999999)
%H
小时(00..23)
%h
小时(01..12)
%I
小时 (01..12)
%i
分钟,数字形式 (00..59)
%j
一年中的天数 (001..366)
%k
小时 (0..23)
%l
小时 (1..12)
%M
月份名称 (January..December)
%m
月份, 数字形式 (00..12)
%p
上午(AM)或下午( PM)
%r
时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM)
%S
秒 (00..59)
%s
秒 (00..59)
%T
时间 , 24小时制 (小时hh:分钟mm:秒数ss)
%U
周 (00..53), 其中周日为每周的第一天
%u
周 (00..53), 其中周一为每周的第一天
%V
周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用
%v
周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用
%W
工作日名称 (周日..周六)
%w
一周中的每日 (0=周日..6=周六)
%X
该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用
%x
该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用
%Y
年份, 数字形式,4位数
%y
年份, 数字形式 (2位数)
%%
‘%’文字字符
按小时统计某一天相应网站的平均访问时间:
2
selectsys_id,FROM_UNIXTIME(scan_time,'%Y-%m-%d %H')ashour,avg(load_time)asavg_time
fromsys_logwhereFROM_UNIXTIME(scan_time,'%Y-%m-%d')=2013-01-13andsys_id=1groupbyhourorderbyhour