О. А. Ткачев

Основы программирования в СУБД Oracle. SQL+PL/SQL.


Скачать книгу

rel="nofollow" href="#image66_5fb6a0b0fdf8443aa6c3ed13_jpg.jpeg"/>

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

      SELECT employee_id, ROUND (SYSDATE – hire_date AS DAYS, -2)

      FROM Employees;

      Следует обратить внимание на то, что этот запрос возвращает дробное значение, так как значение, возвращаемое функцией SYSDATE, содержит текущее время, которое трактуется как часть суток: например, 12 часов отобразятся в виде значения 0,5.

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

      SELECT employee_id, TRUNC ((SYSDATE – hire_date) /7)

      AS WEEKS

      FROM Employees;

      Для определения интервалов между двумя датами в месяцах следует использовать специальную функцию MONTHS_BETWEEN.

      Пример 3.27. Вывести данные о сотрудниках и количестве месяцев, прошедших между датой приема на работу и сегодняшним днем

      SELECT employee_id, first_name, last_name,

      department_id, hire_date,

      

      TRUNC (MONTHS_BETWEEN (SYSDATE, hire_date)) AS MONTHS

      – —

      FROM Employees;

      Пример 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;

      Функция