数学函数
-- 返回X绝对值
SELECT ABS(-9);
SELECT PI();
-- 返回X平方根 负数不能开平方根,返回null
SELECT SQRT(-4);
-- 返回X被Y除后的余数
SELECT MOD(5,2);
-- 返回不小于X的最小整数值
SELECT CEIL(3.44),CEILING(3.44);
-- 返回不大于X的最大整数值
SELECT FLOOR(3.56);
-- 产生随机数 格式如:0.886545069410042,0.0039664851538524825
SELECT RAND();
-- 产生随机数,若X相同,多次执行,产生的随机数相同 0.40613597483014313
SELECT RAND(5);
-- 返回X四舍五入的整数值
SELECT ROUND(4.4);
-- 返回对X进行四舍五入,其值保留到小数点后Y位,若Y为负,则保留小数点左边Y位 4.556
SELECT ROUND(4.55555,3);
-- 返回X的符号,负数返回-1,零返回0,整数返回1
SELECT SIGN(-9);
-- 返回X的Y次幂
SELECT POW(2,3),POWER(3,2);
-- 返回e的X次幂 2.718281828459045
SELECT EXP(1);
-- 返回X的自然对数
SELECT LOG(1);
-- 返回X的基数为10的对数
SELECT LOG10(100);
-- 角度转化为弧度 PI()
SELECT RADIANS(180);
-- 弧度转化为角度 180度
SELECT DEGREES(PI());
-- 三角函数
SELECT SIN(0);
/*ASIN(X);
COS(X);
ACOS(X)
TAN(X)正切
ATAN(X)
COT(X) 余切 */
-- TRUNCATE(X,Y)返回X被截掉小数点后Y位的数字,若Y为0,截掉小数部分,若Y为负,X小数点左边|Y|位置
SELECT TRUNCATE(1.21,1);
SELECT TRUNCATE(1.21,0);
SELECT TRUNCATE(31.21,-1);
字符串函数
-- 计算字符串的字符个数
SELECT CHAR_LENGTH("abd");
-- 拼接 s1,s2,s3....
SELECT CONCAT("ere","22",'333');
-- 使用分隔符separator将s1,s2,.....拼接起来 erex22x333
SELECT CONCAT_WS("x","ere","22",'333');
-- INSERT(s1,x,len,s2)返回字符串s1,其子字符串起始于X位置和被字符串s2取代的len字符 12def
SELECT INSERT("abcdef",1,3,12);
-- 大写字母转为小写
SELECT LOWER("DFSFfd");
SELECT LCASE("DFSFfd");
-- 小写字母转为大写
SELECT UPPER("sfjslfj");
SELECT UCASE("sdffsddf");
-- 返回字符串s左边n个字符组成的子串 abcdef
SELECT LEFT("abcdefg",6);
-- 返回字符串s左边n个字符组成的子串 bcdefg
SELECT RIGHT("abcdefg",6);
-- LPAD(s1,len,s2)返回字符串s1,其左边被字符串s2填补至len字符长度,如果s1的长度大于len,则返回值被缩短至len个字符
SELECT LPAD("123456",7,"aa");-- a123456
SELECT LPAD("123456",3,"aa");-- 123
-- RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度,如果s1的长度大于len,则返回值被缩短至len个字符
SELECT RPAD("123456",7,"aa");-- 123456a
SELECT RPAD("123456",3,"aa");-- 123
-- 删除字符串s左端的空格
SELECT LTRIM(" sssf ");
-- 删除字符串s右端的空格
SELECT RTRIM(" sssf ");
-- 删除字符串s两端的空格
SELECT TRIM(" sssf ");
-- TRIM(s1 FROM s);删除字符串s两端所有字串s1,未指定s1时默认为空格
SELECT TRIM("ee" FROM "sree");-- sr
SELECT TRIM(" " FROM " sree ");
-- REPEAT(str,count)返回count个字符串str拼接成的字符串
SELECT REPEAT("s2",4);-- s2s2s2s2
-- 返回一个由n个空格组成的字符串
SELECT SPACE(10);
-- REPLACE(str,from_str,to_str)使用字符串to_str替换str中所有的from_str
SELECT REPLACE("00ert00","ert","111");
-- 字符串比较
SELECT STRCMP("ssdssx","ssdsss");
/*
当s1<s2时,返回为负数;
当s1==s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare" */
-- 返回字符串s中从n开始长度为len的子串
SELECT SUBSTRING("Sdfjgkl",3,5);
SELECT MID("Sdfjgkl",3,5);
-- LOCATE(str1,str)返回str1在字符串str中的位置
SELECT LOCATE("str","sfstrs");
SELECT POSITION("str" IN "sfstrs");
SELECT INSTR("sfstrs","str");
-- 返回反转后的字符串
SELECT REVERSE("sfghhhfsfsdf");
-- 返回s1,s2,...中第n个字符串
SELECT ELT(2,"dfgdfdf","ertete","shjyjy");
-- 返回字符串s在s1,s2,...中所在的位置。如果str没有找到,则返回0。
SELECT FIELD("strs","strs","sfdsstrs","sfdsdstrs");
日期和时间函数
-- 当前日期
SELECT CURDATE();
SELECT CURRENT_DATE();
-- 当前时间
SELECT CURTIME();
SELECT CURRENT_TIME();
-- 当前日期和时间的组合
SELECT CURRENT_TIMESTAMP();
SELECT LOCALTIME();
SELECT NOW();
SELECT SYSDATE();
-- 返回Unix 时间戳,1970年之后的秒数
SELECT UNIX_TIMESTAMP();
-- 把unix时间戳转换为普通格式
SELECT FROM_UNIXTIME("1510041844");
-- 返回当前UTC日期值(世界标准时间)
SELECT UTC_DATE();
-- 返回当前UTC时间值
SELECT UTC_TIME();
-- 返回date对于的月份,1-12
SELECT MONTH("2017-11-07 16:13:13");
SELECT MONTH("2017-11-07 ");
-- 返回日期date对应月份的英文名 November
SELECT MONTHNAME("2017-11-07");
-- 返回日期d对应的英文名称,例如sunday,monday
SELECT DAYNAME("2017-11-07");
-- 返回日期d对应一周的第几天,0表示周一,1表示周二
SELECT WEEKDAY("2017-11-07");
-- 日期d是一年中的第几周
SELECT WEEK("2017-11-07");
-- 返回日期d是一年中的第几周,mod可以决定一周是从周几开始的
SELECT WEEK("2017-11-07",6);
-- 返回某天位于一年中的第几周
SELECT WEEKOFYEAR("2017-11-07");
-- 返回日期d是一年中的第几天 311
SELECT DAYOFYEAR("2017-11-07");
-- 返回日期d是当月中的第几天
SELECT DAYOFMONTH("2017-11-07");
-- 返回date对应的年份
SELECT YEAR("2017-11-07");
-- 返回date在一年中的第几个季度
SELECT QUARTER("2017-11-07");
-- 返回time中的分钟数
SELECT MINUTE("16:36:53");
-- 返回time中的秒数
SELECT SECOND("16:36:53");
-- 将time转换为秒数
SELECT TIME_TO_SEC("16:36:53");
-- 日期格式化
SELECT DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p');
格式 | 描述 |
---|---|
%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 位 |
DATE_ADD()
函数向日期添加指定的时间间隔。
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔
SELECT DATE_ADD("2017-11-07",INTERVAL 2 DAY)
-->2017-11-09
其他函数例如:
DATE_SUB() 从日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间
http://www.w3school.com.cn/sql/sql_dates.asp
加密函数
-- AES_ENCRYPT 返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储
SELECT AES_ENCRYPT("wang","sjs");
SELECT AES_DECRYPT(AES_ENCRYPT("wang","sjs"),"sjs");
-- 使用key作为密钥解密加密字符串str
SELECT ENCODE("wagas","sfsf00");
SELECT DECODE(ENCODE("wagas","sfsf00"),"sfsf00");
SELECT MD5('123456');
SELECT SHA('123456')