正在整理中...
需求1: 最近写的一个用户数据统计相关接口,需要用到按照每天进行分组统计。
SELECT DATE_FORMAT( create_time, "%Y-%m-%d" ) ,sum(user_id) FROM orders WHERE order_state=2 GROUP BY DATE_FORMAT( create_time, "%Y-%m-%d" ) ;
- 语法
DATE_FORMAT(date,format)
//上面代码中使用的是
DATE_FORMAT( create_time, "%Y-%m-%d" )
date 参数是合法的日期。format 规定日期/时间的输出格式。
- format可以使用的格式
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%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: 查询结果单位换算后保留两位小数
- format函数
说明:format(x,d)是mysql自带的格式化小数函数,format()函数会对小数部分进行四舍五入操作,整数部分从右向左每三位一个逗号进行格式化输出
format函数结果:
23,456.79
- truncate函数
说明:truncate(x,d)是mysql自带的函数,truncate()函数会将小数部分d位以后的值直接舍去
truncate函数结果:
23456.78
- round函数(常用)
说明:round(x,d)是mysql自带的函数,format()函数会对小数部分进行四舍五入操作,但是不会出现format函数中的带逗号格式
round函数数结果:
23456.79
- convert函数(常用)
说明:MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。简单的说就是类型转换。 CONVERT(xxx,类型),但是类型是有限制的,下面几种类型
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
根据文初给出的数据,应该是这些写
convert(23456.789,decimal(10,2));
convert函数数结果,这里也是四舍五入:
23456.79
注:解释下dem的意思
DECIMAL(10,2) 总共能存10位数字,末尾2位是小数,字段最大值99999999.99(小数点不算在长度内)