判空函数
-- 为null时,显示后面的值 SELECT IFNULL(expression, alt_value); SELECT IFNULL(NULL,'这个值为空');判断函数
select case when 2 < 0 then 'a小于0' when 2 > 0 then 'a大于0' else 'a为0' end ; SELECT IF(TRUE,'真的','假的');字符串函数
SELECT lower('SQL Course') ; -- 小写 SELECT upper('SQL Course') ; -- 大写 select CONCAT('a','b','c') ; -- 拼接,有任何参数为null,则函数返回null SELECT CONCAT_WS(',','FirstName','xjdlf'); -- 拼接 带给定的分隔符 SELECT SUBSTRING('hello world',5,3); -- 从第5个位置起,取3个字符 SELECT SUBSTRING('hello world',-3); -- 取最后3个字符 SELECT LEFT('www.yuanrengu.com',8) -- 从左开始截取字符串 即:left(被截取字符串, 截取长度) SELECT RIGHT('www.yuanrengu.com',6) --从右开始截取字符串 即:right(被截取字符串, 截取长度) SELECT LENGTH('we'); -- 返回长度,2 SELECT LENGTH('你好'); -- 返回长度,6 SELECT char_length('你好'); -- 返回长度,2
日期函数
-- 当时时间 select CURDATE(); -- 日期 select now(); -- 当前时间 select SYSDATE(); -- 当前时间 CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP,LOCALTIME()、LOCALTIME、LOCALTIMESTAMP()、LOCALTIMESTAMP; -- 格式化时间 SELECT DATE_FORMAT(NOW(),"%Y-%m-%d"); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') -- 字符串转日期 SELECT STR_TO_DATE('2019-01-20 16:01:45', '%Y-%m-%d %H:%i:%s'); -- 将时间戳格式化 SELECT FROM_UNIXTIME(unix_timestamp(),'%Y-%m-%d %H:%i:%s')
日期比较
-- 取年份 月份 日 SELECT YEAR(NOW()); year() , month(),dayofmonth(); -- 取某个月的第一天 select date_sub('2021-07-08', interval day('2021-07-08') - 1 day); -- 取某个月的最后一天 select last_day('2021-07-08'); -- 取某个月的下个月第一天 select date_add(last_day('2021-07-08'),interval 1 day); -- 整个月的数据 select * from test01 where date_time between date_sub('2021-07-08',interval day('2021-07-08') day ) and date_add(last_day('2021-07-08'),interval 1 day) ; -- mysql 时间相减 得到秒数 select t.date_time2-t.date_time as time from test01 t; -- 返回相差天数(可以为负整数) SELECT DATEDIFF('2021-02-02 12:00:00' , '2020-09-12 13:09:23'); -- 日期加减 select date_add('1970-1-1', interval 10 year); SELECT DATE_ADD('1991-02-12',INTERVAL 10 MONTH); SELECT DATE_SUB('1999-01-01',INTERVAL 10 DAY) ; SELECT DATE_ADD(NOW(),INTERVAL 12 HOUR);
聚合函数
count(列名) 统计记录的条数 max(列名) 求这一列中的最大值,用于数值列 min(列名) 求这一列中的最小值 avg(列名) 求这一列的平均值 sum(列名) 求这一列的总和
随机数
SELECT UUID();