2015-02-25 4 views
0

Я пытаюсь добавить частичный месяц к дате в оракуле. я попытался как этотдобавить неполный месяц к дате в оракуле

SELECT months_between('1-DEC-2014',SYSDATE) FROM dual 

я получить -2,79041218637993

затем я попытался добавить (вычесть) этот результат Sysdate.

SELECT add_months(trunc(SYSDATE), -2.79041218637993) FROM dual 

я думал, что я должен был получить «1-DEC-2014», но он только добавил 2 полных месяцев и покинул .79041218637993 так, он вернулся 12/25/2014.

любые идеи, как я могу получить его, чтобы добавить частичный месяц, чтобы он вернулся 12/01/2014?

+0

Как вы можете получить этот номер? десятичная часть относится к месяцу, который имеет 30,28 или 31 день? Сколько дней имеет 0,5: 15,14 или 15,5? – Aramillo

ответ

1

add_months Используйте функцию:

select add_months(sysdate, 2) from dual; 

Edit: Чтобы ответить на комментарий, просто используйте

select sysdate + days_between('1-DEC-2014',SYSDATE) from dual; 
+0

Я хочу добавить 2.79041218637993 месяцев. смысл, 2 месяца + .79041218637993 месяца (в этом случае должно быть 25 дней) – Nikki

+4

Тогда почему бы просто не просто sysdate + 25? –

+0

, потому что это процедура, и завтра это будет другое количество дней и на следующей неделе, когда я запустил ее, это будет другое количество дней, поэтому я хочу понять это без жесткого кодирования. – Nikki

0

вычитаем 2 месяца, а затем Trunc в месяц.

SELECT TRUNC(add_months(trunc(SYSDATE), -2),'MM') FROM dual 
Смежные вопросы