Пример 3.28. Вывести данные о сотрудниках, которые проработали более 30 лет
SELECT employee_id, first_name, last_name, salary,
department_id, hire_date
FROM Employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date)> 360;
Функция NEXT_DAY (x, день недели) возвращает следующую ближайшую дату, соответствующую определенному дню недели: например, среда.
Пример 3.29. Использование функции NEXT_DAY
SELECT SYSDATE AS «Сегодня», EXT_DAY (SYSDATE, ?Tuesday?)
AS Tuesday
FROM DUAL;
Функция LAST_DAY (x) возвращает дату, соответствующую последнему дню месяца, которому принадлежит x.
Пример 3.30. Использование функции LAST_DAY
SELECT SYSDATE, LAST_DAY (SYSDATE)
FROM DUAL;
Функция ROUND (x, {параметр}) округляет дату x, если параметр отсутствует, то до начала ближайших суток; если {параметр} = MM/ MON / MONTH – то до начала ближайшего месяца; если параметр = YY / YYYY /YEAR – то до начала ближайшего года.
Пример 3.31. Использование функции ROUND c параметром MM
SELECT ROUND (TO_DATE (?12.05.2018?, ?DD.MM.YYYY?),?MM?)
As ?? ROUND MONTCH 12.05.2018 ??,
ROUND (TO_DATE (?20.05.2018?, ?DD.MM.YYYY?),?MM?)
As ?? ROUND MONTCH 20.05.2018 ??
FROM DUAL;
Пример 3.32. Использование функции ROUND c параметром YYYY
SELECT ROUND (TO_DATE (?12.05.2018?, ?DD.MM.YYYY?),?YYYY?)
As ?? ROUND YEAR 12.05.2018 ??,
ROUND(TO_DATE(?12.07.2018?,?DD.MM.YYYY?),?YYYY?)
As ?? ROUND YEAR 12.07.2018 ??
FROM Dual;
Функция TRUNC (x, {параметр}) отличается от ROUND тем, что возвращает начало текущих суток, начало текущего месяца, начало текущего года соответственно.
Пример 3.33. Использование функции TRUNC c параметром MM.
SELECT TRUNC (TO_DATE (?12.05.2018?, ?D.MM.YYYY?),?MM?)
As ?? TRUNC MONTCH 12.05.2018 ??,
TRUNC (TO_DATE (?20.05.2018?, ?D.MM.YYYY?),?MM?)
As ?? TRUNC MONTCH 20.05.2018 ??
FROM DUAL;
Функция EXTRACT
Функция EXTRACT возвращает значение заданного поля даты-времени из значения, имеющего тип date. Синтаксис:
EXTRACT ({часть даты} FROM {дата})
Таблица 3.5. Часть даты, возвращаемая функцией EXTRACT
Пример 3.34. Вывести данные о сотрудниках, которые были приняты на работу в 1999 году
SELECT employee_id, first_name, last_name, department_id, hire_date
FROM Employees
WHERE EXTRACT (YEAR FROM hire_date) =1999;
Функции конвертирования
В СУБД Oracle используются три простых типа данных:
– строки CHAR, VARCHAR2;
– числа NUMBER;
– даты DATE.
Сервер Oracle может конвертировать данные, имеющие тип VARCHAR2 и CHAR, в данные типов NUMBER и DATE. Он может преобразовать данные, имеющие тип NUMBER или DATE, в данные типов CHAR и VARCHAR2.
Преобразование может осуществляться явным и неявным образом. Неявное преобразование осуществляется при выполнении следующего оператора:
{столбец} тип А = {начение/выражение} тип Б