2015-10-25 3 views
0

У меня есть временная метка Unix из Java, которая хранится в виде числового типа данных. Я должен получить количество дней в месяце из метки времени.Процедура получения количества дней в месяце от отметки времени, хранящейся в типе номера 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;