判空函数
-- 为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();