目录
注:存储过程则不可以
- 1) NOW():获取当前日期和时间
- select now();
- 2) DAY():获取日期中的天
- select day(NOW());
- 3) MONTH():获取日期中的月
- select month(now());
- 4) YEAR():获取日期中的年
- select year(now())
- 5) 日期转换函数DATE_FORMAT()/STR_TO_DATE()
- select now(),DATE_FORMAT(now(),'%Y年%m月%d日')
-
- DATE_FORMAT():将日期转换成字符串
- STR_TO_DATE():将字符串转换成日期
- select STR_TO_DATE('2022-06-08','%Y-%m-%d')
-
- 查询各学生的年龄,只按年份来算
- select s.*,year(now()-year(s.sage)) from t_student s;
- 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
- select s.*,year(now())-year(s.sage)+if(month(now())<month(s.sage),-1,0) from t_student s;
- 查询本月过生日的学生
- select * from t_student where month(now())=month(sage);
- 查询下月过生日的学生
- select * from t_student where month(now())+1=month(sage);
- date_add(NOW(), interval 1 MONTH)
-
- select * from t_student where DATE_ADD(now(),INTERVAL 1 month)=month(sage);
-
- select DATE_ADD(now(),INTERVAL 1 month);
运行结果:

- 1) UPPER()/LOWER():大小写互转
- select upper(' my name is zhuxingwen ');
- select lower(' HAO NAN REN WENWEN ');
- 2) REPLACE():搜索并替换字符串中的子字符串
- select uuid(),REPLACE(uuid(),'-',' ');
- 3) SUBSTRING():从具有特定长度的位置开始的最一个子字符串
- select SUBSTRING('zhang san is a person',1,5);
- select SUBSTRING('zhang san is a person',5);
- 4) TRIM():去除前后空格
- 5) LENGTH():获取字符串长度
- select length(' zhang san is a person '),length(trim('zhang san is a person '))
- 6) CONCAT():合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
- 1)FLOOR:向下取整
- 2)CEIL: 向上取整
- 3)ROUND:四舍五入
- select FLOOR(-3.14),FLOOR(3.14),CEIL(-3.14),CEIL(-3.14);

- 1)IF(expr,v1,v2)
- 如果expr是TRUE则返回v1,否则返回v2
- 2)IFNULL(v1,v2)
- 如果v1不为NULL,则返回v1,否则返回v2
-
- 3)CASE expr WHEN v1 THEN r1 [WHEN v2 THEN v2] [ELSE rn] END
- 如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不想等,则返回ELSE后面的rn
- 行列转换
- 需求:每一个学生的语数外分数
- SELECT
- s.*,
- sum(if(sc.cid='01',sc.score,0)) 语文,
- sum(if(sc.cid='02',sc.score,0)) 数学,
- sum(if(sc.cid='03',sc.score,0)) 英语
- from
- t_student s left join t_score sc on s.sid=sc.sid
- GROUP BY s.sid,s.sname;
-
- SELECT
- s.sid,s.sname,
- sum(case when sc.cid='01' then sc.score end) 语文,
- sum(case when sc.cid='02' then sc.score end) 数学,
- sum(case when sc.cid='03' then sc.score end) 英语
- from
- t_student s left join t_score sc on s.sid=sc.sid
- GROUP BY s.sid,s.sname;

SUM():求和。常与GROUP BY一起使用,也可单独使用
AVG():求平均值。常与GROUP BY一起使用,也可单独使用
MAX():求最大值。常与GROUP BY一起使用,也可单独使用
MIN():求最小值。常与GROUP BY一起使用,也可单独使用
COUNT():统计记录的条数。常与GROUP BY一起使用,也可单独使用
select 1,'zs',18
union
select 2,'ls',22
union
select 2,'ls',22

今天的分享就到啦~我们下期再见~