根据他被聘用的日期数量来选择月份
假设在oracle 11.g数据库中,我们正在尝试添加新的雇员,以便我们在当前月份的15个工作日内雇用(假设是这样) ,那么我们为他写下当月雇佣,否则下个月, 例如假设现在是十二月,如果我雇用的新雇员小于十二月十五日,那么雇用的月份将是十二月份,但如果是15岁以上,例如15,16岁等等,那么他的雇用月将是1月,我如何确定每个月雇用的雇员超过15岁? 非常感谢根据他被聘用的日期数量来选择月份
您可以使用ROUND函数,就像这样:
select round(<yourdate>, 'MONTH') hire_month from dual
查看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>
希望它可以帮助...
是的,这将是很好,但我还没有在这里研究案件,如果 - 否则我需要它的中期 –
@Dato,我不明白你的意见。你需要什么? – Ollie
我说我还没有研究案例,如果还有其他功能,我可以做同样的事情,而不使用这些功能 –
回合仅在每月的第16天围捕,在OP需要它围捕15日。 – Ollie