Выбрать главу

Возвращает значение типа дата-время для следующего за х дня;

аргумент день задаётся как литеральная строка, например,

SATURDAY.

Округляет х. По умолчанию х округляется до начала ближайших

суток. Можно предоставить необязательный параметр для указания

единиц округления. Например, если значение строки единицы

равно YYYY, х будет округлен до первого дня ближайшего года.

Возвращает текущие значения даты и времени, установленные

операционной системой машины, на которой размещена база данных.

Округляет х. По умолчанию х округляется до начала дня. Вы можете

представить дополнительную единицы, которая указывает единицы

округления. Например, М М означает, что х округляется до

первого дня месяца.

150 Глава 5

ADD_M0NTHS()

Функцию ADD_MONTHS(x, у) можно использовать для получения результата от

увеличения х на у месяцев. Если у отрицательно, из х вычитается у месяцев.

В следующем примере к дате January 1, 2007 добавляется 13 месяцев:

□ SELECT ADD_MONTHS(’01—JANUARY—2007’, 13)

FROM dual;

ADD_M0NTH

01-FEB-08

В следующем примере из даты January 1, 2008 вычитается 13 месяцев; к

этой дате с помощью функции ADD_M0NTHS() «добавляется» -13 месяцев:

П SELECT ADD_H0NTHS('01—JAN—2008', -13)

FROM dual;

ADD_M0NTH

01-DEC-06 - *

В функцию ADD_M0NTHS() можно передать и дату, и время. Следующий

запрос прибавляет два месяца к типу дата-время для 17:15:26 P.M. January 1,

2007:

□ SELECT ADD_M0NTHS(T0_DATE('01-JAN-2007 19:15:26',

‘DD-M0N-YYYY HH24:MI:SS'), 2)

FROM dual;

ADD_M0NTH

01-MAR-07

Следующий запрос переписывает предыдущий пример, чтобы конвертировать

возвращаемое из ADD_M0NTHS() значение даты и времени в строку

символов, используя для этой цели формат DD-M0N-YYYY HH24:MI:SS:

□ SELECT T0_CHAR(ADD_M0NTHS(T0_DATE('01-JAN-2007 19:15:26',

'DD-MON-YYYY HH24:MI:SS’), 2), 'DD-M0N-YYYY HH24:MI:SS’)

FROM dual;

T0_CHAR(ADD_M0NTHS(T

01-MAR-2007 19:15:26

Примечание Дату и время можно задать для любой из функций, указанных в таблице 5.4.

LAST_DAY()

Функцию LAST_DAY(x) можно использовать для получения последнего дня

месяца, содержащего х. Следующий пример выводит на экран последнюю

дату января 2008 г.:

Хранение и обработка дат и времени 151

□ SELECT LAST_DAY('01-JAN-2008')

FROM dual;

LAST_DAY(

31-JAN-08

MONTHS_BETWEEN()

Функция MONTHS_BETWEEN(x, у) используется для получения количества месяцев

между датами х и у. Если х стоит в календаре раньше, чем у, число,

возвращаемое функцией MONTHS_BETWEEN(), будет отрицательным.

Примечание Порядок следования дат в вызове функции MONTHS_BETWEEN() является существенным:

если вы желаете получить результат в виде положительного числа, более поздняя

дата должна стоять на первом месте.

В следующем примере выводится количество месяцев между 25 мая

2008 г. и 15 января 2008 г. Поскольку более поздняя дата (25 мая 2008 г.) появляется

первой, возвращаемый результат будет положительным числом:

П SELECT M0NTHS_BETWEEN('25-MAY-2008', '15-JAN-2008')

FROM dual;

M0NTHS_BETWEEN(‘ 25-MAY-2008’ , ’ 15-JAN-2008’ )

4.32258065

В следующем примере изменен порядок следования дат в вызове функции

M0NTHS_BETWEEN(), поэтому возвращаемый результат становится отрицательным:

□ SELECT M0NTHS_BETWEEN('15-JAN—2008', '25-MAY-2008')

FROM dual;

M0NTHS_BETWEEN(' 15-JAN-2008’ , ’ 25-MAY-2008’ )

-4.3225806

NEXT_DAY()

Функция NEXT_DAY(x, день) используется для получения даты следующего

за х дня; параметр день задаётся как литеральная строка, например,

SATURDAY.

В следующем примере выводится дата, соответствующая следующей

субботе (Saturday) после первого января 2008 г.:

□ SELECT NEXT_DAYC01 -JAN-2008', 'SATURDAY')

FROM dual;

NEXT_DAY(

05-JAN-08

152 Гпава 5

ROUND0

Функция ROUND(x [, единицы]) используется для округления х. По умолчанию

х округляется до начала ближайших суток. Если предоставляется

дополнительный параметр - строка единицы, х будет округляться до начала

соответствующей единицы; например, при задании строки YYYY х

будет округлен до первого дня ближайшего года. Можно использовать

многие показанные ранее в таблице 5.2 параметры для округления дат и

времени.

В следующем примере функция R0UND() используется для округления даты

25 октября 2008 г. (October 25, 2008) до первого дня ближайшего года.

Дата задана как 25-ОСТ-2008 и содержится внутри вызова функции Т0_

DATEO:

□ SELECT R0UND(T0_DATE('25-0СТ-2008'), 'YYYY')

FROM dual;

R0UND(T0_

01-JAN-09

В следующем примере дата 25 мая 2008 г. (May 25, 2008) округляется до

первого дня ближайшего месяца (до 1 июня 2008 г.), поскольку 25 мая находится

ближе к началу июня, чем к началу мая:

□ SELECT R0UND(T0_DATE('25-MAY-2008', 'ММ')

FROM dual;

R0UND(T0_