Основы программирования в СУБД Oracle. SQL+PL/SQL.. О. А. Ткачев
Чтение книги онлайн.

Читать онлайн книгу Основы программирования в СУБД Oracle. SQL+PL/SQL. - О. А. Ткачев страница 18

СКАЧАТЬ target="_blank" rel="nofollow" href="#image61_5fb6a0b7fdf8443aa6c3ed22_jpg.jpeg"/>

      К типам данных, используемых для представления значений даты и времени, также относятся:

      – TIMESTAMP – аналогичен типу Date, но время хранится с точностью до миллиардной доли секунды. Для получения текущей даты в этом формате используется функция LOCALTIMESTAMP;

      – TIMESTAMP WITH TIME ZONE – хранит вместе со значением даты и времени информацию о часовом поясе. Часовым поясом называется смещение от времени по Гринвичу. Для получения текущей даты в этом формате используется функция SYSTIMESTAMP.

      Пример 3.21. Использование функция LOCALTIMESTAMP

      SELECT LOCALTIMESTAMP

      FROM DUAL;

      Пример 3.22. Использование функция SYSTIMESTAMP

      SELECT SYSTIMESTAMP

      FROM DUAL;

      Функции для работы с данными, имеющими тип даты и времени

      Для обработки данных, имеющих тип Date, можно использовать функции, представленные в таблице 3.4.

      Таблица 3.4. Функции для работы с данными, имеющими тип даты и времени

      Значения, имеющие этот тип, могут участвовать в арифметических операциях с некоторыми ограничениями. Например, разница меду двумя датами равна количеству дней, прошедших между этими датами, но нельзя непосредственно складывать значения, имеющие тип Date.

      Прибавление целого значения n к значению типа Date эквивалентно прибавлению n дней к дате. Прибавление значения n/24 к значению типа Date эквивалентно прибавлению n часов к дате.

      Если в выражении участвует строка, содержащая значение даты, то ее рекомендуется преобразовать к значению типа Date, используя функцию TO_DATE ().

      Рассмотрим примеры, в которых значения, имеющие тип Date, участвуют в арифметических выражениях.

      Пример 3.23. Вывод значения текущей даты, увеличенного на 45 дней

      SELECT SYSDATE, SYSDATE +45

      FROM DUAL;

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

      SELECT TO_CHAR (SYSDATE, ′DD MONTH YYYY, HH24:MI: SS′)

      As Date1,

      TO_CHAR (SYSDATE +2/24, ′DD MONTH YYYY, HH24:MI: SS′)

      As Date2

      FROM DUAL;

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

      Для определения интервалов между двумя датами в месяцах СКАЧАТЬ