MySQL函数
数字函数
- CEIL(x)/CEILING(x) 向上取整
select ceil(column_name) from table_name;
- FLOOR(x) 向下取整
select floor(column_name) from table_name;
- POW(x,y)/POWER(x,y) 返回 x 的 y 次方
select name,age,POW(age,2) from students;
- RAND() 返回 0 到 1 的随机数
select name,age,rand() from students;
- ROUND(x) 返回离 x 最近的整数
-- round(x,d) x保留d位小数
select
clazz
,round(avg(age),2) as avg_age
from students
group by clazz
having avg(age)>22.5
-- round(x) 返回离x最近的小数
select
clazz
,avg(age)
,round(avg(age)) as avg_age
from students
group by clazz
字符串函数
- LENGTH 字节数 CHAR_LENGTH(s)/CHARACTER_LENGTH(s)返回字符串 s 的字符数
select clazz,LENGTH(clazz),CHAR_LENGTH(clazz),CHARACTER_LENGTH(clazz) from students;
select LENGTH('wyl'),CHAR_LENGTH('wyl');
- CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串
-- 注意: 如果有一个字符串为空 则结果为空
select *,CONCAT(name,',',email,',',password) from users;
- CONCAT_WS(separator, str1, str2, …)指定分隔符的拼接
-- 可以指定分割符
-- 遇到为null的值 结果合并会忽略他
select *,CONCAT_ws('#',name,email,password) from users;
- SUBSTR/SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串
select *,SUBSTR(clazz,1,2) from students
- STRCMP(s1,s2)比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
-- 返回值是0 则字符串相等
select *,STRCMP(clazz,'文科六班\r') from students
日期函数
- CURDATE()/CURRENT_DATE()返回当前日期
SELECT CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP
- CURRENT_TIME()/CURTIME()返回当前时间
- CURRENT_TIMESTAMP()返回当前日期和时间
- DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF('2024-05-07','1908-12-04')
- TIMEDIFF(time1, time2)计算时间差值
select TIMEDIFF('10:58:00','09:00:00')
- UNIX_TIMESTAMP()得到时间戳
SELECT UNIX_TIMESTAMP()
- FROM_UNIXTIME()时间戳转日期
select FROM_UNIXTIME(UNIX_TIMESTAMP()-10*24*60*60)
- DATE_ADD(d,INTERVAL expr type)从日期增加指定的时间间隔。
SELECT DATE_ADD(hire_date,interval -10 day) from emp;
SELECT DATE_ADD(hire_date,interval 10 month) from emp;
- DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。
SELECT DATE_SUB(hire_date,interval 10 day) from emp
- DATE_FORMAT(d,f)表达式 f的要求显示日期 d
select DATE_FORMAT(CURRENT_DATE,'%Y-%m-%d %H:%i:%S');
select DATE_FORMAT(CURRENT_DATE,'%m%d %Y');
- STR_TO_DATE(string, format_mask)将字符串转变为日期
select STR_TO_DATE('2024王雨龙05朱超07张雪','%Y王雨龙%m朱超%d张雪');
-- 获取 日期的年份 月份 日 过了多少周(从0计数) 周几 过了多少周
select
YEAR('2024-05-07')
,MONTH('2024-05-07')
,day('2024-05-07')
,week('2024-05-07')
,WEEKDAY('2024-05-07')
,WEEKOFYEAR('2024-05-07')
-- 你出生的那一天是当年的多少周 '2000-07-30'
-- 当年的那一周映射到今年是那一天到那一天
select
WEEKOFYEAR(DATE_ADD('2000-07-30',INTERVAL 24 year))
,WEEKDAY(DATE_ADD('2000-07-30',INTERVAL 24 year))
,DATE_ADD(DATE_ADD('2000-07-30',INTERVAL 24 year),INTERVAL -8 day)
,DATE_ADD(DATE_ADD('2000-07-30',INTERVAL 24 year),INTERVAL -2 day)
高级函数
- IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2
select
*
,if(age=21,'1',if(age=22,'2',if(age=23,'3','4')))
from students;
- IFNULL(v1,v2) 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
select name,IFNULL(email,'[email protected]') from users;
- **CASE (WHEN THEN) + ELSE END **
-- CASE (WHEN condition THEN val) + ELSE END
select
*
,case
when age=21 then '1'
when age=22 then '2'
when age=23 then '3'
when age=24 then '4'
else '5' end
from students
- CAST(x AS type)转换数据类型
-- 支持的转换类型 BINARY、CHAR、DATE、DATETIME、TIME、DECIMAL
select CAST(age AS DECIMAL) from students;
标签:07,--,age,SQL,clazz,MySQL,DATE,select
From: https://blog.csdn.net/m0_74896766/article/details/141072651