07 MySQL常用内置函数
常用函数
1.字符串函数
CONCAT(str1,str2,..,strN)
将str1,str2..strN 拼接成一个字符串,当这里有任何一个为NULL,则拼接结果为NULL
INSERT(str, idx,len,tarStr)
将字符串str从 idx 位置开始,len个字符长度的子串替换为字符串tarStr.
LOWER(str) / UPPER(str)
LEFT( str , len ) / RIGHT( str , len )
返回 str 最左/右边的 len 个字符
LPAD( str , len , fill_str ) / RPAD( str , len , fill_str )
使用字符串 fill_str 对str最左/右边进行填充,直到长度为 len 个字符长度.
LTRIM(str) / RTRIM(str) / TRIM(str)
去掉字符串str 最左侧的空格 / 最右侧的空格 / 两侧的空格
REPEAT(str, count)
返回 str 重复 count 次的结果
REPLACE( str, src_str ,tar_str )
用字符串 tar_str 替换 所有 出现在 str 中的字符串 src_str ;
STRCMP(s1,s2)
比较字符串s1和s2的ASCII的大小.
s1<s2 则返回-1 ; s1>s2 返回1 ; s1=s2 返回0.
SUBSTRING( str , idx , len )
返回字符串 str 从第 idx 索引处开始 长度为 len 的字符串.
2.数值函数
ABS(x)
返回x的绝对值
CEIL(x)
返回大于x的最大整数值
FLOOR(x)
返回小于x的最大整数值
MOD(x,y)
相当于 x%y
RAND()
返回0~1之间的随机数
ROUND(x,y)
返回 x 四舍五入后有y位小数的值
TRUNCATE(x,y)
返回 x 截断 为y位小数的结果;
ROUND() 和 TRUNCATE() 区别是 前者会进行四舍五入,后者只是截断,而不会四舍五入.
3.日期/时间 函数
CURDATE()
返回当前日期,只包含年月日yyyy-MM-dd
CURTIME()
返回当前时间,只包含时分秒hh:mm:ss
NOW()
返回当前日期+时间.yyyy-MM-dd hh:mm:ss
UNIX_TIMESTAMP(date)
返回日期date的UNIX时间戳
FROM_UNIXTIME(unixtime)
返回UNIXTIME时间戳的日期值.与UNIX_TIMESTAMP(date)函数互为逆操作.
WEEK(date)
返回一年中的第几周
YEAR(date)
返回所给日期是哪年
HOUR(time)
返回所给时间的小时
MINUTE(time)
返回所给时间的分钟
MONTHNAME(date)
返回所给date相对应的月份的英文名称,如July.
DATE_FORMAT(date,fmt)
返回按字符串fmt格式化日期date值.
fmt可用到的格式符号:
%S,%s 两位数字形式的秒
%i 两位数字形式的分
%H 两位数字形式的小时,24小时制
%h,%I 两位数字形式的小事,12小时制 todo
%k 数字形式的小时,24小时制.不满10的,不补0
%l 数字形式的小时,12小时制.不满10的,不补0 todo%T 24小时制的时间形式 hh:mm:ss%r 12小时制的时间形式 hh:mm:ssAM 或 hh:mm:ssPM%p AM 或PM%W 一周中每一天的英文名称(如Sunday,Monday)%a 一周中没一台呢的英文名称的缩写(如Sun,Mon)%d 两位数字表示月中的天数%e 数字形式表示月中的天数%D 英文后缀表示月中的天数(1st,2nd,3rd)%w 以数字形式表示周中的天数(0=Sunday,1=Monday...)%j 以3位数字表示年中的天数%U 周(0,1,52) , Sunday为周的第一天%u 周(0,1,52) , Monday为周的第一天%M 月的英文名(January,February..)%b 月的英文名缩写(Jan,Feb,Dec...)%m 两位数字表示的月份%c 数字表示的月份%Y 4位数字表示的年份%y 两位数字表示的年份%% 直接值"%"
DATE_ADD(date,INTERVAL expr type)
其中,INTERVAL是关键字,expr是表达式,type是间隔类型.
MySQL的13种间隔(INTERVAL)类型HOUR 小时 hhMINUTE 分 mmSECOND 秒 ssYEAR 年 YYMONTH 月 MMDAY 日 DDYEAR_MONTH 年月 YY-MMDAY_HOUR 日和小时 DD hhDAY_MINUTE 日和分钟 DD hh:mmDAY_SECOND 日和秒 DD hh:mm:ssHOUR_MINUTE 小时和分 hh:mmHOUR_SECOND 小时和秒 hh:ssMINUTE_SECOND 分钟和秒 mm:ssdemo : SELECT DATE_ADD( now() , INTERVAL -31 DAY) AS before31days ;
DATEDIFF(date1,date2)
计算两个日期中间相差多少天 todo 验证是否和两个参数的顺序相关
4.流程函数
DATABASE()
返回当前数据库名
VERSION()
返回当前数据库版本
USER()
返回当前登录用户名
INET_ATON(IP)
返回IP地址的数字表示,多用于IP大小的比较
INET_NTOA(num)
返回数字代表的IP地址.不要用这种方式比较大小
PASSWORD(str)
返回字符串str的加密版本.返回的字符串长度为41.
只用于对系统用户的密码进行加密,不要用于数据的加密
MD5(str)
返回字符串str的MD5值.对数据进行加密.