Skip to content

Latest commit

 

History

History
120 lines (90 loc) · 3.03 KB

optimize.md

File metadata and controls

120 lines (90 loc) · 3.03 KB

快速导航

正在整理中...

需求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)

//上面代码中使用的是
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: 查询结果单位换算后保留两位小数

数据库表中sale列的值为23456.789

  1. format函数

说明:format(x,d)是mysql自带的格式化小数函数,format()函数会对小数部分进行四舍五入操作,整数部分从右向左每三位一个逗号进行格式化输出

format函数结果:

23,456.79
  1. truncate函数

说明:truncate(x,d)是mysql自带的函数,truncate()函数会将小数部分d位以后的值直接舍去

truncate函数结果:

23456.78
  1. round函数(常用)

说明:round(x,d)是mysql自带的函数,format()函数会对小数部分进行四舍五入操作,但是不会出现format函数中的带逗号格式

round函数数结果:

23456.79
  1. 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(小数点不算在长度内)