第一种方法用left join, 把月份显示出来,没有相应月份的时候,也会显示月份对应的列,但是值为空
第二种方法用临时表,建立2个字段,一个字段用来标注月份,另外一个字段标注统计值,先把12个月全部写进去,然后用指针对12个月进行统计,把结果填入到对应月份的统计结果中,如果为空就填0
0 先理解下格式问题要理解两种格式,一是mysql内部使用和存储时使用的格式,另一个是用户显示的格式;
存储格式:mysql保存日期时间值时使用的CCYY-MM-DD格式遵循ISO 8601标准;
显示格式:显示在输出界面上的格式,可以使用DATA_FORMAT()或TIME_FORMAT()函数来设置和转换;
1 转换和处理
1)提交数据,一是使用标准格式让其自动识别,二是对输入值进行格式指定和转换
insert into t (d) values('2012-01-01') #使用默认ansi标准格式,让数据库自动识别字串为日期;
insert into t (d) values( STR_TO_DATE('2012/February/01', '%Y/%M/%d') ) #使用字符转换为日期的函数来处理自定义格式的输入值;
2)查询数据,一是不使用格式(即使用默认的CCYY-MM-DD格式),二是指定输出格式
select current_date() #默认格式
select date_format(current_date(), ''%Y/%M/%d'') #使用自定义格式,具体参考下date_format的帮助,主要是格式控制符的使用。
2 格式化参数
DATE_FORMAT(), TIME_FORMAT(), STR_TO_DATE()这三个函数都接受格式化串作为参数来格式化日期时间
常用的格式化字符:
%Y4位数字年份 2012
%y2位数字年份 12
%M完整英文月份名称,January - December
%b月份名称前三个字母,Jan - Dec
%m2位数字月份 01-12
%c最小位数字月份 1-12
%d2位数字日期 01-31
%e最小位数字日期 1-31
%W工作日名称 Sunday - Saturday
%r12小时制时间,以AM或PM结尾
%T24小时制时间
%H24小时制小时 00-23
%i2位数字分钟 00-59
%s2位数字秒数 00-59
%%%文字字符
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)