文章目录
- 一、内置函数
- (1)数字函数
- 绝对值
- 取余
- 向下取整
- 向上取整
- 四舍五入
- x的y次方
- 获取圆周率
- 随机数 0-1 之间
- (2)字符串函数
- 字符串转 ASCII
- ASCII 转 字符串
- 拼接
- 字符串长度
- 字符串截取,注意,str 下标从 1 开始,非从零开始
- 两边删除默认空格
- 产生 n 个空格
- 替换
- 大小写切换
- (3)日期时间函数
- 获取当前日期
- 获取当前时间
- 获取当前时间
- 获取特定的值
- 格式化输出
- 给时间添加指定的时间间隔
- 给日期减去指定的时间间隔
- 返回两个日期之间的天数,
- 返回两个时间之间的差值,
一、内置函数
(1)数字函数
绝对值
SELECT abs (-1); # 1
取余
select mod (10,3); # 1
向下取整
select floor(3.5); # 3
向上取整
SELECT ceiling(2.4); # 3
四舍五入
SELECT round(3.5); # 4
SELECT round(3.4); # 3
x的y次方
SELECT pow(3,2); # 9
获取圆周率
SELECT PI();
随机数 0-1 之间
SELECT rand(); #随机 每次都不一样
SELECT rand(n); # 给定随机种子,每次都一样,随着种子改变,相应的随机数也会变化
(2)字符串函数
字符串转 ASCII
select ascii('a'); #97
ASCII 转 字符串
select char(97); # a
拼接
SELECT CONCAT('l','z','y'); # lzy
字符串长度
SELECT LENGTH("lzy"); # 3
字符串截取,注意,str 下标从 1 开始,非从零开始
substring (str, pos, len) # 对于str,从pos 开始, 取的len 长度的字符串为止
SELECT left(str,len)/right(str,len)/substring(str,pos,len);
SELECT left(123456,3),right(123456,3),SUBSTRING(123456,3,3); # 123 456 345
两边删除默认空格
# 左删除 /右删除 /两边删除/ (两边删除 固定 字符, 左边删除固定字符,,,右边删除固定字符 )
select ltrim()/rtrim()/trim()/trim(both/leading/trailing re_tr from str);
SELECT ltrim(" lzy "),rtrim(' lzy '),trim(' lzy '),trim(both "." from '..lzy..'),trim(leading "." from '..lzy..'),trim(trailing "." from '..lzy..');
产生 n 个空格
select space(n);
替换
select replace(str,from_str,to_form);
select REPLACE('lzy','zy','yz'); # lyz
SELECT REPLACE(12345,45,4050); # 1234050
大小写切换
select upper(str)/lower(str);
select upper('lzy'),lower('LZY'); # LZY lzy
test 练习
# 将所有员工姓名转化成小写
select ename,lower(ename) from emp where 1=1;
# 将员工姓名和部门用 - 连接
SELECT concat(ename,'-',deptno) from emp where 1=1;
# out
/*
SMITH-20
ALLEN-30
WARD-30
JONES-20
MARTIN-30
BLAKE-30
CLARK-10
SCOTT-20
KING-10
TURNER-30
*/
(3)日期时间函数
获取当前日期
select current_date()/curdate(); # 也可以不加()
select current_date(),curdate(); # 2021-08-25 2021-08-25
获取当前时间
select current_time()/curtime();
SELECT CURRENT_TIME(),curtime(); # 14:44:47 14:44:47
获取当前时间
select now(); # 2021-08-25 14:46:05 日期+时间
获取特定的值
括号内需加上时间日期
select year(now()); # 2021
select month(now()); #8
select day(now()); # 25
select hour(now()); # 14
select minute(now()); # 52
select second(now()); # 50
格式化输出
data_format(date,format)
format 格式有:
%y 21 %Y 2021
%m
%d
%h 12小时制 %H 24 小时制
%i
%s
select date_format(now(),'%Y/%m/%d - %h:%i:%s'); # 2021/08/25 - 03:04:34
给时间添加指定的时间间隔
expre 表示时间间隔,unit 表示类型
SELECT DATE_ADD(date,INTERVAL expr unit)
SELECT date_add(now(),interval 1 DAY); # 2021-08-26 15:07:35
给日期减去指定的时间间隔
SELECT DATE_SUB(date,INTERVAL expr unit)
SELECT DATE_SUB(now(),interval 1 DAY); # 2021-08-24 15:09:57
返回两个日期之间的天数,
只有值得部分进行运算 date1-date2 date 记得加引号
DATEDIFF(expr1,expr2)
SELECT DATEDIFF('2021/08/25','2021/08/24'); # 1
返回两个时间之间的差值,
只有值得部分进行运算 date 记得加引号
TIMEDIFF(expr1,expr2)
SELECT TIMEDIFF('10:05','09:05'); # 01:00:00