数值函数
Select round(5.74,args) args表示保留的精读 , 1表示保留小数点后一位
Select ceiling(7.1)
Select floor(6.9)
select abs();
select rand() 0-1之间的一个数
字符串函数
Select length('sky');
Select lower('SKY');
Select upper('sky');
select ltrim(' sky');
Select rtrim('sky ');
select trim(' sky ');
select left('kindergarten',4);
select right('kindergarten',6);
select substring('kindergerten',1,4);
select locate('n','kindergerten'); -- 返回目标字符串的下标,找不到返回0
select replace('this is a girl','this','that');
select concat('z','qj');-- select concat('first_name',' ','last_name');
日期函数
select now();-- 返回当前时间 YY-MM-DD HH-mm-ss
select current_timestamp(); -- 同上
select curdate();-- 返回当前日期
select curtime();-- 返回当前时间
select year(now()); -- 返回 2020同理 month() day() hour() minute() , second()
select dayname(now()) -- 返回天的名字,一个字符串。 e.g monday tuesday 同理 monthname()
extract(unit from date);-- 该函数用于返回日期的某一个单独部分
-- unit可以是
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
Select *
from orders
where year(order_date) >= year(now())
格式化日期和时间
select time_format(NOW(),'%H:%i %p') -- 15:39 PM
select date_add(now() ,interval 1 day); -- 一天后的时间 之前的时间就传入负值
select datediff(d1,d2) -- 返回日期差
Select order_id,
ifnull(shipper_id, 'not assigned') as shipper
from orders
-- 以上 如果shipper_id 是 null 会返回'not assigned'
coalesce('condition1','condition2'...,null);
-- mysql 引擎会检查所有的条件,当条件被满足,就返回当前的condition,否则返回最后的null
-- 联系
select concat(first_name,' ',last_name) as customer,
coalesce(phone,'unkonwn')
from customers
IF函数
IF(EXP,first,second) -- 如果 exp 为真 返回 first, 否则返回second
select
order_id,
order_date,
if(year(order_date) = year ( now()),'active' , 'archived') as status
from orders
CASE
因为if只能判断一个条件
CASE
when year(order_date) = year(now()) then ' active'
when year(order_date) = year(now()) - 1 then 'last year'
when year(order_date) < year(now())-1 then 'previous year'