根据他被聘用的日期数量来选择月份

问题描述:

假设在oracle 11.g数据库中,我们正在尝试添加新的雇员,以便我们在当前月份的15个工作日内雇用(假设是这样) ,那么我们为他写下当月雇佣,否则下个月, 例如假设现在是十二月,如果我雇用的新雇员小于十二月十五日,那么雇用的月份将是十二月份,但如果是15岁以上,例如15,16岁等等,那么他的雇用月将是1月,我如何确定每个月雇用的雇员超过15岁? 非常感谢根据他被聘用的日期数量来选择月份

您可以使用ROUND函数,就像这样:

select round(<yourdate>, 'MONTH') hire_month from dual 
+0

回合仅在每月的第16天围捕,在OP需要它围捕15日。 – Ollie

查看Oracle的to_char函数。这将允许您从日期中提取特定值。

to_char(data_value,'DD')会给你一个月的一天为例。

尝试:

SELECT (CASE 
      WHEN EXTRACT(day FROM hiredate) < 15 
      THEN EXTRACT(month FROM hiredate) 
      ELSE (EXTRACT(month FROM hiredate) + 1) 
     END) AS HireMonth 
    FROM employee 
WHERE empno = <your number> 

如果你想通过名字月份则:

SELECT (CASE 
      WHEN EXTRACT(day FROM hiredate) < 15 
      THEN TO_CHAR(hiredate, 'Month') 
      ELSE TO_CHAR(ADD_MONTHS(hiredate, 1), 'Month') 
     END) AS HireMonth 
    FROM employee 
WHERE empno = <your number> 

编辑:正如你不能使用CASE,那么这里是一个替代方案(尽管使用CASE要好得多):

SELECT TO_CHAR(hiredate, 'Month') AS hireMonth 
    FROM employee 
WHERE EXTRACT(day FROM hiredate) < 15 
    AND empno = <your number> 
UNION ALL 
SELECT TO_CHAR(ADD_MONTHS(hiredate, 1), 'Month') AS hireMonth 
    FROM employee 
WHERE EXTRACT(day FROM hiredate) >= 15 
    AND empno = <your number> 

希望它可以帮助...

+0

是的,这将是很好,但我还没有在这里研究案件,如果 - 否则我需要它的中期 –

+0

@Dato,我不明白你的意见。你需要什么? – Ollie

+0

我说我还没有研究案例,如果还有其他功能,我可以做同样的事情,而不使用这些功能 –