Oracle PL / SQL datetime математика - интервалы - PullRequest
1 голос
/ 20 января 2011

Я уже некоторое время использую синтаксис, такой как {?EndDate} - INTERVAL '1' YEAR, и я знал, что есть проблема, с которой я столкнусь в конечном итоге, и я просто поразил ее Я пытался сделать DATE '2010-12-31' - INTERVAL '6' MONTH, и он задохнулся, потому что нет 31 июня. Какой самый эффективный и последовательный способ кодирования этого? Хотя выслеживание человека, который принял решение сделать это таким образом, было бы более удовлетворительным, это нецелесообразно. : -)

1 Ответ

3 голосов
/ 20 января 2011

Я не уверен, существует ли постоянный способ, поскольку это, безусловно, зависит от того, что кто-то считает 6 месяцев.Тем не менее, imho, можно с уверенностью предположить, что add_months - это стандартный способ (по крайней мере, в Oracle) вычитать или складывать месяцы:

select add_months(DATE '2010-12-31',-6)  from dual;

Это выражение возвращает 30 июня 2010 г. (последний деньв этом месяце (как 31 декабря).

...