2010-10-25 3 views
3

Как видно из названия, я ищу функцию в pl/sql, которая делает что-то похожее, как функция DateAdd. Я смотрел, и я нашел функцию add_months, но я бы очень хотел, тот, который немного более изменчива, так как мне нужно, чтобы иметь возможность добавлять минуты, часы, дни и т.д.Функция DateAdd в pl/sql

+0

Дайте мне 100 долларов, и я не только предоставит вам функцию DateAdd, но также NumberAdd, NumberSubstract, NumberMultiply, NumberDivide ... кроме того, я даже включу функции, которые позволят вам добавить ** три ** числа вместе в одном вызове функции, бесплатно! ;) –

+0

Вы уже сказали мне дать вам 100 $;), так что не было бы бесплатно;). Спасибо за ответ, хотя. Я сам создал функцию, которая делает то же самое. – jovany

+0

Возможный дубликат [Эквивалентная функция для DATEADD() в Oracle] (http://stackoverflow.com/questions/24405297/equivalent-function-for-dateadd-in-oracle) –

ответ

3

Оказывается есть не много решений:

PL/SQL позволяет выполнять арифметические операции непосредственно с переменными даты. Вы можете добавить числа к дате или вычесть числа из даты. Чтобы переместить Дата один день в будущем, просто добавьте 1 к дате, как показано ниже:

hire_date + 1 

Вы даже можете добавить дробное значение на сегодняшний день. Например, добавление 1/24 к дате добавляет час к компоненту времени этого значения. Добавление 1/(24 * 60) добавляет одну минуту к компоненту времени и т. Д.

+0

mmm ok. Поэтому только обходные пути в этой области да;). Спасибо за совет, я попробую. – jovany

+0

Это все, что я нашел, даже если это кажется мне странным. Я пользователь MySQL ^^ – MatTheCat

+1

Обход проблемы? Угадайте, что зависит от того, откуда вы пришли. Будучи привыкшим к простой арифметике, вы можете задаться вопросом, почему на земле вам нужна специальная функция для добавления значения к дате. – Rene

6

Помимо добавления номера к датам - хотя это самый простой способ - вы можете добавить интервалы так:

date1 := date2 + interval '1' day; 
date1 := date2 + interval '2' month; 
date1 := date2 + interval '3' year; 

Это почти то же самое, но я предпочитаю последний для лучшей читаемости.

+0

Да, я тоже создал это, как это;). – jovany

Смежные вопросы