Возвращает значение типа дата-время для следующего за х дня;
аргумент день задаётся как литеральная строка, например,
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_