题解 | 查询2022年毕业用户的刷题记录

查询2022年毕业用户的刷题记录

https://www.nowcoder.com/practice/e53e8797213748038a5faeb8563ba27a

select q.user_id, q.question_type, q.device, q.pass_count, q.date
from questions_pass_record q
left join user_info u
on q.user_id = u.user_id
where graduation_year = '2022'

题目中没有问到,但做题的时候想起来了,顺道补充一下

从 date里面提取年份

在 SQL 中,从日期(date)类型字段中提取年份的方法因数据库不同而略有差异,以下是主流数据库的实现方式:

1. MySQL

使用 YEAR() 函数,直接提取年份:

sql

SELECT YEAR(date_column) AS year  -- date_column 是日期类型字段
FROM table_name;

示例:

sql

SELECT YEAR('2023-10-05') AS year;  -- 结果:2023

2. SQL Server

使用 YEAR() 函数(与 MySQL 兼容):

sql

SELECT YEAR(date_column) AS year
FROM table_name;

或使用 DATEPART() 函数,指定 year 作为提取单位:

sql

SELECT DATEPART(year, date_column) AS year
FROM table_name;

示例:

sql

SELECT YEAR('2023-10-05') AS year;  -- 结果:2023
SELECT DATEPART(year, '2023-10-05') AS year;  -- 结果:2023

3. Oracle

使用 EXTRACT() 函数,从日期中提取年份:

sql

SELECT EXTRACT(YEAR FROM date_column) AS year
FROM table_name;

或使用 TO_CHAR() 函数将日期转换为包含年份的字符串(需指定格式):

sql

SELECT TO_CHAR(date_column, 'YYYY') AS year  -- 'YYYY' 表示4位年份
FROM table_name;

示例:

sql

SELECT EXTRACT(YEAR FROM TO_DATE('2023-10-05', 'YYYY-MM-DD')) AS year;  -- 结果:2023
SELECT TO_CHAR(TO_DATE('2023-10-05', 'YYYY-MM-DD'), 'YYYY') AS year;  -- 结果:'2023'(字符串类型)

4. PostgreSQL

使用 EXTRACT() 函数或 DATE_PART() 函数:

sql

-- 方法1:EXTRACT
SELECT EXTRACT(YEAR FROM date_column) AS year
FROM table_name;

-- 方法2:DATE_PART
SELECT DATE_PART('year', date_column) AS year
FROM table_name;

示例:

sql

SELECT EXTRACT(YEAR FROM '2023-10-05'::date) AS year;  -- 结果:2023
SELECT DATE_PART('year', '2023-10-05'::date) AS year;  -- 结果:2023

通用说明

  • 所有方法均适用于 DATE 类型字段,若字段是字符串(如 '2023-10-05'),需先通过 TO_DATE()(Oracle)、STR_TO_DATE()(MySQL)等函数转换为日期类型再提取年份。
  • 提取结果通常为整数(如 2023),部分函数(如 Oracle 的 TO_CHAR)返回字符串,需根据需求处理类型。

根据使用的数据库选择对应函数即可,核心是通过数据库提供的日期提取函数定位到 “年份” 部分。

全部评论

相关推荐

迷茫的大四🐶:当你得到一些东西,那这些东西就会变成基本项,你有别人也有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务