求一个统计月份mysql 存储过程

求一个统计月份mysql 存储过程,第1张

第一种方法用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

%%%文字字符


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

原文地址: https://outofmemory.cn/zaji/8445060.html

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

发表评论

登录后才能评论

评论列表(0条)

保存