数据库中运算
select 1+1;
SELECT (1+1)*3;
时间函数
now() 当前时间
select now();
year() 年
使用year()函数的时候,需要传入日期
select YEAR("2020-10-10");
返回当前的时间
select YEAR(NOW());
查询学生表中1995出生的学生信息;
SELECT * from students where year(birthday) = 1995;
year(birthday) 会把具体的日期换成年份显示;
查询1995,1997,2011 年出生的学生;
select * from students where year(birthday) in (1995,1997,2011);
month() 月份
传入一个日期,返回这个日期对应的月份
SELECT MONTH(NOW());
查询1月份出生的学生信息;
select * from students where month(birthday) = 1;
查询1月份-6月份之间出生的同学
select * from students where month(birthday) between 1 and 6;
select * from students where month(birthday) <= 6;
day() 月份中天
select DAY(now())
Hour() 小时
SELECT HOUR(NOW());
Minute() 分钟
select MINUTE(now());
Second() 秒
SELECT SECOND(NOW());
查询出生日期中为 月份为1-6月 并且在 12:00-18:00 之间出生的同学;
select * from students
where month(birthday) between 1 and 6
and
hour(birthday) between 12 and 18;
Date_Format() 格式转换
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
select date_format(now(),"%H-%i-%s");
select * from students
where date_format(birthday,"%m") between 1 and 6
and
DATE_FORMAT(birthday,'%H') between 12 and 18;
datediff() 计算日期差值
传入两个值,计算两个时间之间相差的天数
SELECT DATEDIFF(NOW(),"1991-10-01");
1991-10-01 到今天总过了 多少天;
查询最近10天出生的学生信息;
select * from students where datediff(now(),birthday) <=10;
- now() 当前时间
- birthday 数据库中表里面的具体的时间
- datediff() 计算两个时间之间
date_add() 更加灵活的时间操作
Type 值 | 说明 |
---|---|
MICROSECOND | 毫秒 |
SECOND | 秒 |
MINUTE | 分钟 |
HOUR | 小时 |
DAY | 天 |
WEEK | 周 |
MONTH | 月 |
QUARTER | 季度 |
YEAR | 年 |
15个月前的那天
select date_add(now(),INTERVAL -15 month );
2天后
select date_add(now(),interval 2 day);
查询最近15个月出生的学生信息;
select * from students where birthday >= date_add(now(), interval -15 month);
思维导图
作业
查询heros 表
按照hp_max 从大到小排序,查询 上架时间(birthdate)不为null 的英雄信息 ```sql select from (select from heros order by hp_max desc) as tmp where not birthdate is null;
SELECT * FROM heros where not birthdate is null order by hp_max desc;
2. 查询2015,2016年度上架的所有英雄
```sql
select * from heros where birthdate like "2015%" or birthdate like "2016%";
select * from heros where YEAR(birthdate) in (2015,2016);
查询 上架时间(birthdate)为null的影响,按照hp_max进行从大到小的排序;
SELECT * FROM heros WHERE birthdate IS NULL ORDER BY hp_max DESC ;
查询 姓名为三个字,按照 hp_5s_max 从大到小,hp_max从小到大进行排序;
SELECT * FROM heros WHERE NAME LIKE "___" ORDER BY hp_5s_max DESC,hp_max ASC;
查询hp_max最高的英雄信息;
select hp_max from heros order by hp_max desc limit 1;
select * from heros where hp_max = (select hp_max from heros order by hp_max desc limit 1);
查询hp_max最低的英雄信息;
select * from heros where hp_max = (select hp_max from heros order by hp_max limit 1);
查询hp_max第二高的英雄信息; ```sql — 1. 找到第二高的值 select hp_max from heros where hp_max < (select hp_max from heros order by hp_max desc limit 1) order by hp_max desc limit 1;
— 2. 根据值找人 select * from heros where hp_max = ( select hp_max from heros where hp_max < (select hp_max from heros order by hp_max desc limit 1) order by hp_max desc limit 1 );
8. 查询hp_max第二低的英雄信息;
---
查询students表
1. 查询 2020年以后出生的学生
```sql
select * from students where year(birthday) > 2020;
- 查询成绩最高的学生,并按id进行降序排序; ```sql — 1. 找到最高分 select score from students order by score desc limit 1;
— 2. 根据最高分找人 select * from students where score = (select score from students order by score desc limit 1) order by id desc;
3. 查询语文分数最高的学生;
```sql
-- 1. 先找语文最高分
select score from students where course = "语文" order by score desc limit 1;
-- 2. 根据分数找对应的人
select * from students where course = "语文" and
score = (select score from students where course = "语文" order by score desc limit 1);
- 查询数学成绩最低的学生;