mysql常用函数使用总结
mysql TIMESTAMPDIFF和TIMESTAMPADD说明
1.TIMESTAMPDIFF
语法:
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。
说明:
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:
FRAC_SECOND。表示间隔是毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
2.TIMESTAMPADD
语法:
TIMESTAMPADD(interval,int_expr,datetime_expr)
说明:
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。式中的interval和上文中列举的取值是一样的。
mysql case when then else end说明
例:
select id,(case when type=1 then ‘普通用户’
when type=2 then ‘VIP用户’
when type=3 then ‘管理员’
else ‘其它’ end) type
from user
分类统计使用场景:
select sum(case when type = 1 then 1 else 0 end) ‘a’,
sum(case when type = 2 then 1 else 0 end) ‘b’,
sum(case when type = 3 then 1 else 0 end) ‘c’,
count(id) total
from user
mysql group_concat
函数作用: 当SQL语句中使用到….group by….的时候, 该函数能够将相同的行组合起来。
函数语法:
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
例:
select u.id,u.name username,group_concat(o.number SEPARATOR ‘;’) numbers
from user u
left join order o on o.userid=u.id
===========================================
id | username | numbers
1 | huhui | order1;order2
mysql concat
使用方法:
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
注意:
如果所有参数均为非二进制字符串,则结果为非二进制字符串。
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col) …
mysql distinct
select结果值去重,例:一个user表
id | name
1 | a
2 | b
3 | b
4 | c
select distince name from user;
================================
name
a
b
c
若想把user表的其它字段也显示出来,则建议使用group by(group by比distinct查询速度快):
select id,name from user group by name;
当然也有些场景会使用到:
select a.*,group_concat(distinct b.name) from …
mysql DATE_FORMAT
定义和用法
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法
DATE_FORMAT(date,format)
date 参数是合法的日期。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)
%pAM 或 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 位
例:
DATE_FORMAT(NOW(),’%b %d %Y %h:%i %p’)
DATE_FORMAT(NOW(),’%m-%d-%Y’)
DATE_FORMAT(NOW(),’%d %b %y’)
DATE_FORMAT(NOW(),’%d %b %Y %T:%f’)
mysql having
SQL标准要求HAVING必须引用GROUP BY子句中的列或用于总计函数中的列。
例:查询只有一张订单的所有用户服务
select u.id,u.name from user u
left join order o on o.userid=u.id
group by u.id,u.name
having count(o.id)=1
欢迎大家阅读《mysql惯用函数使用总结_mysql》,跪求各位点评,by 搞代码