数学函数
# 进制转换
SELECT CONV('a',16,2); -- 1010
SELECT CONV('6E',18,8); -- 172
SELECT CONV(-17,10,-18); -- -H
SELECT CONV(10+'10'+'10'+X'0a',10,10); -- 40
# 绝对值
select ABS(-1);
select ABS(123);
# 向上取整
select ceil(1.1);
# 向下去整
select floor(1.9);
# 四舍五入
select round(1.3);
select round(1.6);
字符串函数
# 拼接字符串
select concat('枫枫', '知道');
# 拼接字符串,指定拼接符号
select concat_ws('-', '枫枫', '知道');
# 提取字符串
select substr('fengfeng', 1, 4); # feng
select substr('fengfeng', -4, 4); # feng 从后往前
# 按分隔符截取字符串前 N 个或者后 N 个子串
select substring_index('fengfengzhidao.com', '.', 1); # fengfengzhidao
select substring_index('fengfengzhidao.com', '.', -1); # com
select substring_index('fengfengzhidao.com', '.', 2); # fengfengzhidao.com
日期函数
# 返回当前时间
select now();
# 返回年月日的格式
select CURDATE();
# 返回时间格式
select CURTIME();
# 时间戳转日期
SELECT FROM_UNIXTIME(1697537006);
# 日期转时间戳
SELECT UNIX_TIMESTAMP('2023-10-17 10:03:26');
SET @dt = '2019-04-16 15:05:12.123456';
# 时间选取
select date(@dt) as 日期,
TIME(@dt) as 时间,
YEAR(@dt) as 年,
MONTH(@dt) as 月,
MONTHNAME(@dt) as 全名月,
DAY(@dt) as 月份中的天,
DAYNAME(@dt) as 星期名字,
DAYOFYEAR(@dt) as 一年的天数,
HOUR(@dt) as 时,
MINUTE(@dt) as 分,
SECOND(@dt) as 秒,
QUARTER(@dt) as 季度,
WEEK(@dt) as 周数;
比较函数
select 1 in (1, 2);
select 1 in (2, 4);
select isnull(null);
select isnull(1);
# 算最小值
select least(1,2,3,4);
# 返回最大值
select greatest(1,2,3,4)