前言
上一章节说了对于mysql基础是最后一章,但是有的小伙伴反馈对常用的函数不了解,所以这一章节作为补充讲一下mysql常用的函数有哪些?
对于不了解工作中常用的mysql知识有哪些可以参考一下:
下面我们就来看看mysql工作中常用的函数有哪些吧!
常用时间类的函数
DATE() :
说明:函数返回日期或日期/时间表达式的日期部分。
常用在where条件过滤指定的时间,如date(create_time)。
now() :
说明:获得当前日期时间。
常用在标记脚本执行的时间/数据上传时间/时间差等。
DATE_FORMAT(date,format):
说明:函数用于对时间的显示进行格式化。
常用在清洗数据中获取想要的时间格式。
里面的%y表示2位数,%Y表示四位数。
SELECT now()
-- 输出:2021-10-05 16:03:52
SELECT date(now())
-- 输出:2021-10-05
SELECT DATE_FORMAT(Now(),'%Y/%m/%d')
-- 输出:2021/10/05
复制
str_to_date(str, format):
说明:字符串转换为日期。
常用于数据清洗,可以把一些杂乱无章的字符串转换为日期格式。
注意str和format的格式顺序要一样,其中%y或者%Y都可以。
select str_to_date('08/09/08' , '%m/%d/%y')
-- 输出:2008-08-09
复制
makdedate(year,dayofyear):
说明:拼凑日期、时间函数。
常用于周期执行。
select makedate(2001,31); -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
select maketime(12,15,30); -- '12:15:30'
复制
unix_timestamp():
说明:将时间变为时间戳格式。
可用数据时间差计算。
复制
from_unixtime():
说明:将时间戳变为时间格式。
多数用于清洗数据。
复制
select unix_timestamp(); -- 1218290027
select unix_timestamp('2008-08-08'); -- 1218124800
select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800
select from_unixtime(1218290027); -- '2008-08-09 21:53:47'
select from_unixtime(1218124800); -- '2008-08-08 00:00:00'
select from_unixtime(1218169800); -- '2008-08-08 12:30:00'
复制
DATE_ADD():
说明:为日期增加一个时间间隔。
常用于获取指定时间。
DATE_SUB():
说明:为日期减去一个时间间隔。
---指定日期1秒后:
SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND); -- 2011-01-01 00:00:00
-- 指定日期1天后:
SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 DAY); -- 2011-01-01 23:59:59
-- 指定日期减去10小时:
SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-10' DAY_HOUR) -- 2010-12-31 14:00:00
-- 指定日期的一个月前:
SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY); -- 2010-12-02
-- 指定日期的前一天:
SELECT date_add('2011-01-01', INTERVAL -1 DAY); -- 2010-12-31
复制
datediff(date1,date2):
说明:日期、时间相减函数。
常用于计算多次触发一个事件的最小间隔时间。
select datediff('2008-08-01', '2008-08-08'); -- -7
复制
常用聚合类的函数
COUNT(col) :
说明:统计查询结果的行数。
常用count(distinct user_ID) 表示UV,用count(*) 表示PV。
MIN(col) :
说明:查询指定列的最小值。
MAX(col):
说明:查询指定列的最大值。
SUM(col):
说明:求和,返回指定列的总和。
AVG(col):
说明:求平均值,返回指定列数据的平均值。
但一定要确定好数据的范围,如果出现脏数据会造成“局部数据影响整体数据”
常用字符串类的函数
LENGTH(s):
说明:计算字符串长度函数,返回字符串的字节长度。
CONCAT(s1,s2...,sn):
说明:合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个。
连接语句中的字符如果有一个是NULL,则返回NULL。
TRIM(str):
说明:删除字符串左右两侧的空格。
replace(object,search,replace):
说明:字符串替换函数,返回替换后的新字符串。
把object对象中出现的的search全部替换成replace。
SUBSTRING(str,start,len):
说明:截取字符串,返回从指定位置开始的指定长度的字符换。
start表示起始位置,len表示要截取的字符串长度,len是可选。
mysql使用的是从1开始,不是从0开始。
REVERSE(str):
说明:返回颠倒字符串str的结果。
常用流程控制类的函数
IF(test,t,f):
如果test是真,返回t;否则返回f
case when:
-- 简单函数
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
-- 搜索函数
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
复制
假设需要对性别进行归类,性别1我们想显示男,2我们想显示女。
--- 简单函数
case `gender`
when 1 then '男'
when 2 then '女'
else '未知'
end
--- 搜索函数
case
when gender = 1 then '男'
when gender = 2 then '女'
else '未知'
end
复制