<pre name="code" class="sql" style="line-height: 18px;"><span style="color: rgb(0, 0, 255); background-color: rgb(204, 204, 204);">SELECT </span><span style="background-color: rgb(204, 204, 204); font-family: Verdana, 宋体, sans-serif;"><span style="color:#0000ff;"> DATE_FORMAT(</span><span style="color:#cc66cc;"><code class="sql plain">时间字段名,</code><code class="sql string">'%Y-%m-%d'</code></span><span style="color:#0000ff;"><code class="sql plain"></code></span><span style="color:#0000ff;">),count(*) </span></span><span style="color: rgb(0, 0, 255); font-family: Verdana, 宋体, sans-serif;"><span style="background-color: rgb(204, 204, 204);">FROM table where 条件 <span style="font-family: Verdana, Arial, 宋体;">GROUP BY</span> </span></span><span style="color: rgb(0, 0, 255); font-family: Verdana, 宋体, sans-serif; background-color: rgb(204, 204, 204);">DATE_FOR</span><span style="color: rgb(0, 0, 255); font-family: Verdana, 宋体, sans-serif; background-color: rgb(204, 204, 204);">MAT(</span><span style="color: rgb(0, 0, 255); background-color: rgb(204, 204, 204); font-family: Verdana, 宋体, sans-serif;"><span style="color: rgb(204, 102, 204);"><code class="sql plain">时间字段名,</code><code class="sql string">'%Y-%m-%d'</code></span></span><span style="color: rgb(0, 0, 255); font-family: Verdana, 宋体, sans-serif; background-color: rgb(204, 204, 204);">)</span><span style="color: rgb(0, 0, 255); font-family: Verdana, 宋体, sans-serif; background-color: rgb(204, 204, 204);"> </span>
GROUP BY 语句可以根据一个或多个列对结果集进行分组。结合count()可以进行数据统计。
注: 在MySql中因为不支持从convert()函数,所以需要改用DATE_FORMAT(date,format)替代
在使用DATE_FORMAT(date,format)时,如果时间格式为2015-11-17 17:11:282(及最后的秒为三位数)得到的结果会为null 会导致统计结果出错
date_format()使用方式如下:
<span style="background-color: rgb(255, 255, 255); font-family: Verdana, 宋体, sans-serif;">根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)</span>
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
所有的其他字符不做解释被复制到结果中。
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> select DATE_FORMAT('1997-10-04 22:23:00',
'%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
MySQL3.23中,在格式修饰符字符前需要%。在MySQL更早的版本中,%是可选的。