2011-11-30 46 views
0

假設在oracle 11.g數據庫中,我們正在嘗試添加新的僱員,以便我們在當前月份的15個工作日內僱用(假設是這樣) ,那麼我們爲他寫下當月僱傭,否則下個月, 例如假設現在是十二月,如果我僱用的新僱員小於十二月十五日,那麼僱用的月份將是十二月份,但如果是15歲以上,例如15,16歲等等,那麼他的僱用月將是1月,我如何確定每個月僱用的僱員超過15歲? 非常感謝根據他被聘用的日期數量來選擇月份

回答

0

您可以使用ROUND函數,就像這樣:

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

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

1

查看Oracle的to_char函數。這將允許您從日期中提取特定值。

to_char(data_value,'DD')會給你一個月的一天爲例。

3

嘗試:

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

我說我還沒有研究案例,如果還有其他功能,我可以做同樣的事情,而不使用這些功能 –

相關問題