请编写一条 SQL 语句,从订单表中提取每个订单的订单日期,并在查询结果中同时展示该订单日期对应的年份和季度信息。
考察说明
考查候选人对 SQL 日期函数和 YEAR、QUARTER 等提取函数的掌握程度。
回答思路
- 【回答框架 1】SQL 中提取日期字段的年份和季度,通常使用数据库内置的日期函数。对于 MySQL,可使用 YEAR(order_date) 获取年份,QUARTER(order_date) 获取季度。
- 【回答框架 2】若使用 PostgreSQL,可分别用 EXTRACT(YEAR FROM order_date) 和 EXTRACT(QUARTER FROM order_date) 实现。SQL Server 中则用 DATEPART(year, order_date) 和 DATEPART(quarter, order_date)。
- 【回答框架 3】查询语句基本结构为 SELECT 订单日期列, 年份表达式, 季度表达式 FROM 订单表。若需要按订单分组,可结合 GROUP BY 或直接输出明细行。
- 【回答框架 4】如果订单日期存在 NULL 值,需要根据业务需求决定是否过滤或使用 COALESCE 处理,避免结果中出现空年份或空季度。
- 【关键点 1】使用 YEAR() 和 QUARTER() 函数可以直接提取年份和季度。
- 【关键点 2】对于不支持 QUARTER() 的数据库,可以使用 MONTH() 结合 CASE 或整除运算计算季度。
- 【关键点 3】查询要明确指定表名和列名,避免歧义。
- 【关键点 4】注意日期类型的存储格式,函数会自动识别。
- 【易错点 1】不同数据库的日期函数名称有差异,不能盲目通用。
- 【易错点 2】若订单日期为 NULL,提取函数可能返回 NULL,需考虑是否影响统计。
- 【易错点 3】不要将年份和季度当作字符串操作,应使用专门的日期函数。