在sql查询中提取月份

时间:2015-04-05 07:14:11

标签: sql oracle datetime oracle11g to-char

在员工表(dept 50,60,80)的所有三个部门中,可以找到所有部门所有员工的招聘日期中的哪个月(即JAN或FEB,或JUN等)?

提示:1月是雇员被雇用到50和60及80的部门的月份。

表中的数据可能是这样的

Hiredate                Department_id
29-JAN-97                   50
03-JAN-90                   60
29-JAN-00                   80

您要编写的SQL的输出应该产生如下内容:

Month Name
------------------
January 

我真的不知道从哪里开始。请帮忙!

2 个答案:

答案 0 :(得分:0)

要从hiredate列中获取月份名称以获取departments列表,请将 TO_CHAR Month format一起使用。< / p>

请阅读文档以了解有关Format models and datetime format elements.

的更多信息
  

MONTH - 月份名称,填充空格,长度为9个字符。

例如,

SELECT DISTINCT TO_CHAR(hiredate, 'Month') Month_name, department_id dept
   FROM employees
WHERE department_id IN (50, 60, 80);

答案 1 :(得分:0)

select mth "Month" 
  from (
    select distinct department_id, to_char(hire_date, 'Month') mth
      from employees
      where department_id in (50, 60, 80) ) 
  group by mth 
  having count(1)=3

SQLFiddle

内部查询在每个部门中选择不同的月份。 现在,您只需要计算这些月份并显示count = 3行。这是通过外部查询中的group byhaving来完成的。