2017-08-31 160 views
-1

我有一個帶有DOB列的員工表,所以現在我想顯示所有員工的當前年齡。
要了解我用這個查詢我可以得到所有員工的年齡就知道查詢如下如何找出年齡和月份的員工確切年齡

SELECT * 
FROM (SELECT ename, 
       job, 
       dob, 
       TRUNC(MONTHS_BETWEEN(SYSDATE,DOB)/12,1) AGE 
     FROM employee); 

的年齡,但我的要求是,如果顯示的員工年齡爲2.5,然後我需要顯示,年齡爲2年6個月。

+1

你有你除以12前的總個月你只需要找到商和餘數除以12時 - 在這種情況下,2和6 –

回答

2

試試這個---

SELECT ename, 
     job, 
     dob, --TRUNC(MONTHS_BETWEEN(SYSDATE, DOB)/12, 1) AGE 
     trunc(months_between(sysdate, DOB)/12) || ' years ' || 
     trunc(mod(months_between(sysdate, DOB), 12)) || ' months ' AGE 
    FROM employee; 
+1

有一個看看這些評論爲了看看爲什麼這不是完美的(但最有可能是足夠的):https://stackoverflow.com/questions/45974976/pl-sql-difference-between-two-dates/45977827?noredirect=1# comment78917731_45977827 –

+0

@Wernfried Domscheit,是的,上面的查詢是放棄天差異的一部分。如果我們需要考慮這個問題,我們可以修改查詢如下--- –

+0

SELECT dob,--TRUNC(MONTHS_BETWEEN(SYSDATE,DOB)/ 12,1)年齡 trunc(months_between(sysdate,DOB)/ 12 )|| '年'|| trunc(mod(months_between(sysdate,DOB),12))|| '月'|| TRUNC(SYSDATE - ADD_MONTHS(DOB, TRUNC(MONTHS_BETWEEN(SYSDATE,DOB)/ 12)* 12 + TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,DOB),12))))|| 'days'AGE FROM employee; –