MySQL函数1(单行函数)
单行函数
函数的理解
分类
数值函数
基本函数
- PI()无参数
- CETL \ CETLING()天花板函数(取比自己大的相邻的数)
- FLOOR()地板函数(取比自己小的相邻的数)
- RAND()无参数:随机;RAND(参数):一个固定的随机数
单行函数可以嵌套
角度与弧度的互换函数
三角函数
指数和对数
进制间的转换
- CONV(x,f1,f2):f1进制下的x,变成f2进制下的数
字符串函数
-
CHAR_LENGTH('字符串'):显示有多少个字符
-
LENGTH('字符串'):显示内存层面占多少个字节
-
CONCAT_WS(x,s1,s2....):用x来连接字符(串)
-
INSERT(s1,int1,int2,s2):从是的第int1开始,数int2个数替换成s2(字符串的索引从1开始)
-
LEFT(str,n)和RIGHT(str,n):如果n的数大于字符串的长度,则全部输出
日期和时间函数
获取日期,时间
select CURDATE(),NOW(),curtime(),utc_date(),utc_timestamp(),utc_time()
from dual;
# 结果
2022-03-05 2022-03-05 09:31:46 09:31:46(北京时间)
2022-03-05 2022-03-05 01:31:46 01:31:46(英国,格林威治时间)
日期和时间戳的转换
select unix_timestamp(),from_unixtime(1646444141),unix_timestamp('2021-10-01 12:12:32`')
from dual;
#结果
1646444277 2022-03-05 09:35:41 1633061552果
获取月份,星期,星期数,天数等
注:
- WEEKDAY():返回周几,周1是0
- DAYOFWEEK():返回周几,周日是1
日期的操作函数
EXTRACT(type FROM data)
SELECT EXTRACT(second FROM NOW())
FROM DUAL;#返回现在的秒数
时间和秒钟转化的函数
select time_to_sec(curtime()),sec_to_time(36265)
from dual;
36265 10:04:25
计算日期和时间的函数
基础的计算
- 返回与给定时间相差INTERVAL时间段的日期时间
DATE_ADD(datetime,INTERVAL expr type) \
ADDDATE(date,INTERVAL expr type)
- 返回与date相差INTERVAL时间间隔的日期
DATE_SUB(date,INTERVAL expr type) \
SUBDATE(date,INTERVAL expr type)
SELECT now(),date_add(now(),interval 1 year),date_add(now(),interval -1 year)
from dual;
#结果
2022-03-05 10:23:59
2023-03-05 10:23:59 加一年
2021-03-05 10:24:14 减一年
注:expr可以是负数(减去);在分钟和秒数等之间的expr要加下划线和单引号
复杂的计算
- PERIOD_ADD(时间,n):时间的表达是没有‘-’的
日期的格式化与解析(显式)
- 格式化:日期—>字符串
select date_format(NOW(),'%Y-%m-%d'),time_format(curtime(),'%h:%i:%s')
from dual;
2022-03-05 11:10:43
- 解析:字符串—>日期
select str_to_date('2022-October-05','%Y-%M-%d')
from dual;
2022-10-05
- GET_FORMAT
放入上述的fmt中,自动匹配对应的日期时间格式eg:
select date_format(NOW(),get_format(date,'USA'))
from dual;
流程控制函数(MySQL自带循环)
- IF(value,value1,value2):类别C语言中的 ... ? ... : ...语句
SELECT id,salay,if(salary >= 5000,'高工资','低工资') "detail"
FROM employees;#判断高低工资
- IFNULL(value1,value2):只能判断null的情况
- CASE WHEN...THEN...ELSE...END
CASE WHEN salary >= 10000 THEN '高薪'
else '低薪' END
加密和解密函数
- PASSWORD():在MySQL8.0中弃用
- MD5()和SHA()是不可逆的
- ENCODE()和DECONE()在MySQL8.0中也弃用了
MySQL信息函数
其他函数
- FORMAT(value,n):若n<=0,则保留整数
- INET_NTOA(value):每个部分分别*256的3、2、1、0次方,再加起来