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次方,再加起来
posted @ 2022-03-05 19:08  T,a,o  阅读(137)  评论(0编辑  收藏  举报