sql语句查询学生表近半年的数据,如果近半年没有数据只显示年月
时间: 2024-02-20 12:58:10 浏览: 115
可以使用以下 SQL 语句查询学生表近半年的数据,如果近半年没有数据则只显示年月:
```
SELECT
CASE
WHEN COUNT(*) = 0 THEN DATE_FORMAT(NOW(), '%Y-%m')
ELSE DATE_FORMAT(MAX(created_at), '%Y-%m-%d')
END AS last_data_date
FROM
students
WHERE
created_at >= DATE_SUB(NOW(), INTERVAL 6 MONTH);
```
这个 SQL 语句使用了 CASE WHEN 语句来判断查询结果是否为空,如果查询结果为空,则使用 DATE_FORMAT 函数将当前时间格式化为年月形式;否则,使用 DATE_FORMAT 函数将学生表中最近的数据的创建时间格式化为年月形式。
其中,DATE_SUB 函数用于获取当前时间往前推半年的时间戳,created_at 字段为学生表中的创建时间。
相关问题
sql语句查询学生表近半年的数据,如果近半年没有数据则显示近半年所有年月
可以使用以下 SQL 语句查询学生表近半年的数据,如果近半年没有数据则显示近半年所有年月:
```
SELECT
CASE
WHEN COUNT(*) = 0 THEN
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 6 MONTH), '%Y-%m'),
DATE_FORMAT(NOW(), '%Y-%m')
ELSE DATE_FORMAT(MAX(created_at), '%Y-%m-%d')
END AS last_data_date
FROM
students
WHERE
created_at >= DATE_SUB(NOW(), INTERVAL 6 MONTH);
```
这个 SQL 语句使用了 CASE WHEN 语句来判断查询结果是否为空,如果查询结果为空,则使用 DATE_FORMAT 函数将当前时间往前推半年的时间戳和当前时间格式化为年月形式;否则,使用 DATE_FORMAT 函数将学生表中最近的数据的创建时间格式化为年月形式。
其中,DATE_SUB 函数用于获取当前时间往前推半年的时间戳,created_at 字段为学生表中的创建时间。
用sql语句创建学生表:student(学号sno,学生姓名sname,出生年月sbirth,性别ssex)
你可以使用以下 SQL 语句创建一个名为 student 的学生表:
```sql
CREATE TABLE student (
sno INT PRIMARY KEY,
sname VARCHAR(255),
sbirth DATE,
ssex VARCHAR(10)
);
```
这个表包含了四个列:
- sno:学号,使用 INT 类型作为主键。
- sname:学生姓名,使用 VARCHAR(255) 类型存储学生姓名,长度为最大255个字符。
- sbirth:出生年月,使用 DATE 类型存储出生年月。
- ssex:性别,使用 VARCHAR(10) 类型存储性别信息,长度为最大10个字符。
在创建表后,你可以根据需要插入、更新或查询学生信息。记得根据实际需求进行数据类型的选择和合理的约束设置。
阅读全文