Ⅰ、数学函数:
1、绝对值函数ABS(x)和返回圆周率函数PI(),而PI()默认显示小数位数为6
2、平方根函数SQRT(x)和求余函数MOD(x,y),当平方根里的为负数,返回NULL。求余函数对小数也起作用,返回精确余数。
3、获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x)。前两个相同为向上取整,返回一个BIGINT类型。后一个为向下取整,返回一个BIGINT类型。
【两者都是返回一个0<=v<=1 之间的数。而带参数的,x作为种子,用来产生重复序列。而不带参的每一次产生都不一样。】
5、四舍五入函数ROUND(x)、ROUND(x,y)、TRUNCATE(x,y)
【第一个返回最接近于参数x的整数,对x进行四舍五入。而两个参数的ROUND返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。TRUNCATE与ROUND相似,但他不会四舍五入,直接截取。】
返回参数的符号,x值为负、零或正时返回结果依次为-1,0,1;
前两个一样,返回x的y次方。后一个返回e的x次方。
前者返回x的自然对数。后者为返回以10为基数的对数。
前者将x由角度转化成弧度。后者将弧度转化为角度。
余弦函数COS(x)和反余弦函数ACOS(x)
正切函数、反正切函数和余切函数 TAN(x)、ATAN(x)、COT(x)
Ⅱ、字符串函数:
1、计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回str所包含的字符个数,一个汉字与一个字母或数字一样,算一个字符。
LENGTH(str)返回字符串的字节长度,跟上面的不一样,一个汉字是3个字节,一个数字或字母算一个字节。
前者返回结果为连接参数产生的字符串:若任一参数为NULL,则返回值为NULL;若所有参数均为非二进制字符串,则结果为非二进制字符串。若含有任一二进制字符串,则结果为一个二进制的字符串。
后者的x为其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值,即CONCAT_WS('*','1',NULL,'2');返回1*2
返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。若x超过字符串的长度或者为负值,则返回值为原始字符串。假如len的长度长于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。
而UPPER(str)或者UCASE(str)都可以将字符串转换成大写。
前者返回字符串s开始的最左边n个字符,后者返回s最右边n个字符。
前者返回s1左边被用s2填充到len长度的字符串。当len长度小于s1的长度,则s1 输出从左到右len个字符。例如:
LPAD('hello',4,'?') 返回hell,LPAD('hello',10,'?') 返回?????hello
后者为在s1的右边填充s2至len的长度。
RPAD('hello',4,'?') 返回hell,RPAD('hello',10,'?') 返回hello?????
前者只删除字符串左边的空格,第二个只删除右边的空格,第三个删除两侧的空格。他们都只是在字符串两侧操作,而不会影响字符串里面的空格。
删除字符串s中两端所有的子字符串s1,s1为可选项。在未指定情况下删除空格。
返回一个由重复的字符串s组成的字符串,字符串s的数目等于n,若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。
前者返回一个由n个空格组成的字符串。
后者使用s2替代字符串s中所有的字符串s1.
第一个参数小于第二个,则返回-1;大于,则返回1;相等,则返回0;
两个作用相同。都是返回在s中第n个开始,len长度的字串。若n为负值,则从s的末尾开始往回数第n个字符,然后再往末尾len长度的子串。若没有指定长度,则第n个字符开始到末尾全部被返回。若len为小于1的值,结果始终为空字符串。
返回子字符串str1在字符串str中的开始位置。
14、字符串逆序的函数REVERSE(s) 将字符串s的顺序反转。
ELT(N,字符串1,字符串2,字符串3,...,字符串N)若N=1,则返回值为字符串1,若N=2,则返回值为字符串2,以此类推。若N小于1或者大于参数的数目,则返回值为NULL。
FIELD(s,s1,s2,…) 返回字符串s在列表s1,s2,...中第一次出现的位置,在找不到s的情况下,返回值为0。如果s为NULL,则返回值为0,原因是NULL不能同任何值进行同等比较。大小写敏感,切要完全匹配才算相等。
FIND_IN_SET(s1,s2) 返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个由多个逗号“,”分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回0。如果任意一个参数为NULL,则返回值为NULL。
【若第一个参数包含一个逗号“,”时,将无法正常运行。】
FIELD和FIND_IN_SET 作用类似!!!
MAKE_SET(x,s1,s2,...)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2对应比特01,以此类推。s1,s2...中的NULL值不会被添加进结果中。
当x为0时,返回空字符串。
Ⅲ、日期和时间函数
1、获取当前日期的函数和获取当前时间的函数
CURDATE()和CURRENT_DATE()函数相同,返回当前日期:‘YYYY-MM-DD'或YYYYMMDD 格式。具体格式根据函数用在字符串或是数字语境中而定。【比如:用CURRENT_DATE()+0 可以返回数字格式】
CURTIME()和CURRENT_TIME()函数相同,返回当前时间:'HH:MM:SS'或 HHMMSS 的格式。具体也是根据函数的语境而定。
2、获取当前日期和时间的函数
CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE() 4个函数的作用相同,均返回当前日期和时间值,格式为'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS,具体格式也是根据语境而定。
3、UNIX时间戳函数
UNIX_TIMESTAMP(date)
若无参调用,则返回一个现在时间到’1970-01-01 00:00:00‘的Unix时间戳作为无符号整数;若有参数date(可以是DATE字符串,DATETIME字符串,TIMESTAMP或一个当地时间的YYMMDD或YYYYMMDD格式的数字)
则返回这个参数到’1970-01-01 00:00:00‘的Unix时间戳。即:距离那个时间过了多少秒
FROM_UNIXTIME(date)
把UNIX时间戳转换成普通格式时间:与UNIX_TIMESTAMP(date)互为反函数;
4、返回UTC日期的函数和返回UTC时间的函数
UTC_DATE()函数返回当前UTC(时间标准时间)日期值,其格式为’YYYY-MM-DD'或YYYYMMDD,具体根据语境。即当前时区的日期值。
UTC_TIME()函数返回当前UTC时间值,格式‘HH:MM:SS'或HHMMSS 具体根据语境。当前时区
5、获取月份的函数MONTH(date)和MONTHNAME(date)
前者返回一个月份数字,后者返回一个月份的英文全名
6、获取星期的函数DAYNAME(date)、DAYOFWEEK(date)和WEEKDAY(date)
前者返回工作日的英文全称。中者返回一周中的索引:1表示周日,2表示周一,...,7表示周六。后者返回工作日的索引:0表示周一,1表示周二,...6表示周日。
7、获取星期数的函数WEEK(date)和WEEKOFYEAR(date)
前者计算日期date是一年中的第几周。双参数形式允许指定该星期是否起始于周日或周一,以及返回值的范围是否为从0到53或从1到53。若Mode参数被省略,则使用系统自变量的值。
后者与前者的WEEK(date,3)返回的值相同。
8、获取天数的函数 DAYOFYEAR(date) 和 DAYOFMONTH(date)
前者是返回date是一年中的第几天,范围1到366;后者是返回data是一个月中的第几天,范围1到31
9、获取年份、季度、小时、分钟、秒钟的函数
YEAR(date) 返回年份,范围 1970到2069年
QUARTER(date) 返回季度,范围1到4
MINUTE(time) 返回对应的分钟数,范围 0到59
SECOND(time) 返回对应的秒数,范围 0到59
10、获取日期的指定值的函数 EXTRACT(type FROM date)
type的类型:YEAR YEAR_MONTH DAY_MINUTE ... 【而DAY_MINUTE 返回日、小时、分钟值】
11、时间和秒钟转换的函数
TIME_TO_SEC(time) 返回已转化为秒的time参数。公式:小时*3600+分钟*60+秒
SEC_TO_TIME(seconds) 返回被转化为小时、分钟和秒数的seconds 参数值,格式:‘HH:MM:SS’或HHMMSS
12、计算日期和时间的函数
DATE_ADD() ADDDATE() DATE_SUB() SUBDATE() ADDTIME() SUBTIME() DATE_DIFF()
1)DATE_ADD(date,INTERVAL expr type) 或者 ADDDATE(date,INTERVAL expr type)作用一样加运算,date包括DATETIME或DATE值。expr指示了表达式,type为表达式被解释的方式。
2)DATE_SUB(date,INTERVAL expr type) 或者 SUBDATE(date,INTERVAL expr type) 减运算
3)ADDTIME(date,expr)将expr值添加进date,expr是一个TIME值。
4)DATEDIFF(date1,date2)返回date1和date2之间的天数,date为DATE或DATETIME格式,但是不会理会TIME的差异,单纯的计算日
13、将日期和时间格式化的函数
DATE_FORMAT(date,format)根据format指定格式显示date值
TIME_FORMAT(time,format)根据format指定格式显示time值,只处理时间值。
GET_FORMAT(val_type,format_type)返回日期时间字符串的显示格式,val_type包括DATE,DATETIME,TIME;format_type包括EUR,INTERVAL,ISO,JIS,USA.
可以在DATE_FORMAT 中用GET_FORMAT 作format