You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Employee表中生日在10月或11月的员工全部数据?

查询Oracle中生日在10月或11月的员工数据

问题背景

需要从EMPLOYEE表中获取所有生日(EMP_DOB字段)在10月或11月的员工全部数据,表结构如下:

CREATE TABLE EMPLOYEE (
EMP_NUM integer PRIMARY KEY,
EMP_LNAME varchar2(15),
EMP_FNAME varchar2(12),
EMP_HIREDATE date,
EMP_DOB date
);

尝试使用MONTH()函数查询时出现错误ORA-00904: "MONTH": invalid identifier,原查询语句:

SELECT *
FROM EMPLOYEE
WHERE MONTH(EMP_DATE) = '10' OR MONTH(EMP_DATE) = '11'

错误原因

  1. Oracle数据库没有MONTH()函数,这是MySQL等其他数据库的语法,Oracle不支持。
  2. 查询中写错了字段名:应该是EMP_DOB而非EMP_DATE。

正确查询方法

方法1:使用EXTRACT()函数提取月份

EXTRACT()可以直接从DATE类型字段中提取月份的数值,适合数值比较场景:

SELECT *
FROM EMPLOYEE
WHERE EXTRACT(MONTH FROM EMP_DOB) IN (10, 11);

方法2:使用TO_CHAR()函数转换为月份字符串

将日期格式化为两位月份字符串后进行匹配,适合格式相关的匹配场景:

SELECT *
FROM EMPLOYEE
WHERE TO_CHAR(EMP_DOB, 'MM') IN ('10', '11');

两种方法均可实现需求,EXTRACT()在数值比较上性能更优,TO_CHAR()则更灵活处理日期格式相关的匹配逻辑。

内容的提问来源于stack exchange,提问作者DataScience_2367

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:21:11