2019-03-25函数

函数 函数名(参数)

1.

DATE_FORMAT(DATE,FORMAT):返回日期格式

NOW():返回当前日期年月日时分秒

CURDATE():返回当前年月日

CURTIME():返回当前的时分秒

2.

case ...when ...then

IFNULL(expr1,expr2):第一个为空则返回第二个

TIMESTAMPDIFF(可以为年月日,大日期,小日期):返回指定的日期相差的时间(可以为年月日)

 DATEDIFF(expr1,expr2):返回俩个日期相差的天数(大的日期在前边)

DATE_ADD(date,INTERVAL expr unit) :指定日期加上指定的时间(可以为年月日) 

DATE_SUB(date,INTERVAL expr unit)

3.

 CONCAT(str1,str2,...):字符串连接

LENGTH(str):字符串长度

lpad('aaa',个数,'添加的东西'):右边添加

RPAD(str,len,padstr):左边添加



创建了虚表

数学函数

abs()绝对值

 select abs(-19) from test

round(x,y) :精确到小数点后y位,如果y不写精确到整数位

select round(99.567,2),round(99.565)

from test1

truncate(x,y):截断到小数点后Y位,之后清零

select truncate(56.66,1) ,truncate(56.66,1),truncate(56.66,-1) from test1

字符串函数

substr(str,pos,length):str操作的字符串,pos开始的位置,length从开始截取的长度(不可以截取字符串)

select substr('hello ',1,3)

from test1

以s,j,m开头的员工姓名

select ename

from emp 

where substr(ename,1,1) in('s','j','m')

select ename

from emp

where ename like 's%'or ename like 'j%' or ename like'm%'

length():字符串长度

select ename

from emp

where length(ename)=5


-- 1.CONCAT(str1,str2,...)连接字符串

select ename,CONCAT(substr(ename,1,1),lower(substr(ename,2))),length(ename)

from emp

where substr(ename,1,1) in ('J','A','M')

order by ename

-- 2.ropad(),lpad()左右添加*

select concat(rpad(empno,10,'*'),rpad(ename,10,'*'),lpad(sal,10,'*'))

from emp

其中str1是第一个字符串,length是结果字符串的长度,str2是一个填充字符串。如果str1的长度没有length那么长,则使用str2填充;如果str1的长度大于length,则截断。

str1的长度 < length

mysql> select lpad('hi',4,'xxx') ;

+--------------------+

| lpad('hi',4,'xxx') |

+--------------------+

| xxhi              |

+--------------------+

1 row in set (0.00 sec)


str1的长度> length

mysql> select lpad('hi',1,'xxx') ;

+--------------------+

| lpad('hi',1,'xxx') |

+--------------------+

| h                  |

+--------------------+

1 row in set (0.00 sec)

————————————————


日期函数

MySQL 5.6以后日期支持默认值

create table test8(

dataa datetime dafault NOW()

)

CURDATE()和 CURRENT_DATE():获取当前日期:年月日

curtime():当前的时分秒

now()获取当前日期:年月日时分秒

select CURDATE(),CURRENT_DATE(),NOW()

from test1


date_format(date,format)格式化日期(将日期格式改为规定格式)

--%Y--年

-- %m--月

-- %d--日

-- %h--小时 %H(24进制)

-- %i--分

-- %s --秒

datediff(expr1,expr2):返回俩个日期相差的天数(大的日期在前边)

select hiredate,DATEDIFF(curdate(),hiredate)

from emp

extract()提取时间,给定日期的,年月日时分秒

select hiredate,

extract(YEAR FROM hiredate),

extract(month FROM hiredate),

extract(DAY  FROM hiredate),

extract(HOUR FROM NOW()),

extract(MINUTE FROM NOW()),

extract(SECOND FROM NOW())

FROM emp

ifnull(参数1,参数2):参数1为空的话,返回参数二

TIMESTAMPDIFF(MONTH,'2000-01-1',NOW()) :返回指定的日期相差的时间(可以为年月日)

-- 计算2000年1月1日到现在多少个月,多少周

select TIMESTAMPDIFF(MONTH,'2000-01-1',NOW()) 月,TIMESTAMPDIFF(WEEK,'2000-01-1',NOW()) 周

FROM test1

DATE_ADD(date,INTERVAL expr unit) :指定日期加上指定的时间(可以为年月日) 

DATE_SUB(date,INTERVAL expr unit)

select ename,hiredate,

DATE_ADD(hiredate,INTERVAL 6 MONTH) 转正

FROM emp




流程控制函数

-- CASE.....when...then

-- DECODE(crypt_str,pass_str)

-- 查询员工姓名,工资,部门编号,部门名称

select ename,sal,deptno,(CASE deptno when 10 then '开发部'

                                    when  20 then '实施部'

                                    when  30 then  '测试部'

                                    else '小卖部' end  ) 部门名称

from emp

- 算税金

select sal,(case 

                      when sal<1000  then 0

                      when sal>= 1000 and sal<2000 then sal*0.1

                      when sal>=2000  and sal <3000  then sal*0.15

                      else sal*0.2 end) 税金

from emp

select sal,(case  TRUNCATE(sal/1000,0)

                      when 0 then 0

                      when 1  then sal*0.1

                      when 2  then sal*0.15

                      else sal*0.2 end) 税金

from emp

你可能感兴趣的:(2019-03-25函数)