2015-10-25 18 views
0

我有一個來自Java的Unix時間戳值,它存儲爲數字數據類型。我必須從時間戳中獲得月份的天數。從數字類型中存儲的時間戳中獲取月份中的天數的過程PL/SQL

我嘗試創建這樣的,但沒有效果的存儲過程:

FUNCTION countDaysInMonth(millis NUMBER) 
    RETURN NUMBER 
IS 
    daysInMonth NUMBER; 
    BEGIN 
    SELECT EXTRACT(DAY FROM(LAST_DAY(TO_DATE('1970-01-01', 'YYYY-MM-DD') + millis/86400000))) 
    END 
    INTO daysInMonth 
    FROM dual; 
    RETURN daysInMonth; 
END countDaysInMonth; 

有人能幫助我嗎?我完全在PL/SQL初學者

+1

你是什麼意思「沒有效果」是什麼意思?你收到一個錯誤的號碼,錯誤或什麼?您的查詢似乎正確。確保該函數接收到一個13位數字,並且如果它接收到一個10位數 - 將86400000更改爲86400. –

+0

millis'參數實際包含什麼,如「在該參數中傳遞的數字是什麼」 ?你期望的結果是什麼? –

+0

是的你是對的。我發送了一個10位數字的號碼,並沒有改變除數爲86400。謝謝你的幫助 –

回答

0

你的函數可以是這樣的:

FUNCTION countDaysInMonth(millis NUMBER) RETURN NUMBER IS 
BEGIN 
    RETURN EXTRACT(DAY FROM LAST_DAY(TIMESTAMP '1970-01-01 00:00:00 UTC' + millis/1000 * INTERVAL '1' SECOND)); 
END countDaysInMonth; 
相關問題