
Функции работы с датами
ADD_MONTHS
Функция ADD_MONTHS возвращает дату с тем же днем месяца, что и в исходной дате, но отнесенную на заданное количество месяцев в будущее или прошлое. Причем функция достаточно «интеллектуальна», чтобы определить, является ли указанный день последним днем месяца, и соответствующим образом скорректировать конечный результат. Например:
-- определить номер зачетки студентов, начавших увлекаться каким-либо хобби менее 2-х месяцев от текущей даты
SELECT N_z
FROM Students_Hobby
WHERE Data_Start < =ADD_MONTHS(TRUNC(SYSDATE), 2);
LAST_DAY
Функция LAST_DAY возвращает последний день любого месяца, указанного в переданной ей дате.
MONTHS_BETWEEN
Функция MONTS_BETWEEN возвращает количество месяцев, разделяющих две даты. Применив функцию TRUNC, можно получить количество целых месяцев. Например:
-- определение количества месяцев до текущей даты, прошедших с момента начала увлечения хобби
SELECT N_z, TRUNC(MONTHS_BETWEEN(Data_Start, SYSDATE), 0)
FROM Students_Hobby;
Функции преобразования данных
TO_CHAR
Функция TO_CHAR преобразует дату, время или число в текст. Ее основная ценность в том, что она позволяет в широких пределах управлять отображением дат, времени и чисел. По умолчанию числа показываются с тем количеством десятичных знаков, которые содержат. Что же касается дат, то они отображаются в формате, который мало кто использует в повседневной жизни, и по умолчанию не содержат времени. Функция TO_CHAR позволяет исправить эти ситуации. Синтаксис функции имеет следующий вид:
TO_CHAR(входное_значение, код_формата)
Код формата состоит из одного или нескольких элементов, определяющих, как будут представлены дата и время, либо число. В таблицах 2 и 3 представлен неполный перечень элементов формата, которые могут быть использованы для форматированного вывода даты, времени и чисел. Например:
-- отображение даты и времени рождения студентов
-- в формате «дд.мм.гггг чч:мм:сс»
SELECT S_name,F_name, TO_CHAR(Date_B, ‘dd.mm.yyyy hh24:mi:ss’
FROM Students;
Таблица 1. Элементы формата даты и времени, используемого в функции TO_CHAR
-
Элемент
Описание
-
/
,
.
;
:
‘любой текст’
Воспроизведение соответствующих знаков препинания и текста в кавычках
D
День недели (1-7)
DAY
Название дня недели, дополненное пробелами до девяти символов
DD
День месяца (1-31)
DDD
День года (1-366)
DY
Сокращенное название дня недели
MM
Месяц года (1-12)
MON
Сокращенное название месяца года
MONTH
Название месяца года
RM
Римский номер месяца
Q
Квартал года
YY
Год (две цифры)
YYYY
Год (четыре цифры)
YEAR
Год в буквенном написании
WW
Неделя года (1-53), в котором первая неделя начинается в первый день года и продолжается до седьмого дня года
W
Неделя месяца (1-5), в котором первая неделя начинается в первый день месяца и заканчивается в седьмой день месяца
HH
Час дня (1-12)
HH24
Час дня (0-23)
MI
Минуты (0-59)
SS
Секунды (0-59)
AM
A.M.
PM
P.M.
Обозначение времени до или после полудня (с точками или без точек)
Таблица 2. Элементы формата чисел, используемого в функции TO_CHAR
-
Элемент
Описание
$
Отображение знака доллара перед значением
L
Отображение знака местной денежной единицы в указанной позиции
, (запятая)
Помещает запятую в указанной позиции
. (точка)
Помещает точку в указанной позиции
RN или rn
Отображение числа римскими цифрами верхнего или нижнего регистра (только для целых чисел от 1 до 3999)
TO_DATE
Функция TO_DATE преобразует текстовое представление даты (и/или времени) в действительные значения даты/времени. Функция имеет синтаксис аналогичный синтаксису функции TO_CHAR и используется, например, при вводе данных в таблицы при неизвестном формате, принятом в той или иной базе данных по умолчанию.