Использование типа Timestamp в oracle

добавлено: 13 мар 17
понравилось:0
просмотров: 3361
комментов: 0

теги:

Автор: Myp3_u_K

Авторский курс. SQL от новичка до профессионала. Бесплатное вводное занятие. Сертификат. Записывайся!
Прокачаю до уровня БОГ!


TIMESTAMP – специальный тип данных в oracle расширяющий возможности типа данных date

Представлен в трех вариантах:
timestamp
Год, месяц, часы , минуты , секунды

timestamp with local time zone
то же что и предыдущий тип данных, но дополнительно включает еще и следующие значения временных зон
time_zone_hour и time_zone_minute или же time_zone_region

timestamp with local time zone
тип данных со значением часового пояса

поля данных типа timestamp

Создадим таблицу c полями указанных типов
create table ttmstamp(t1 timestamp, t2 timestamp with time zone, t3 timestamp with local time zone);


Для работы с типом Timestamp существует специальная функция
CURRENT_TIMESTAMP, которая возвращает текущее время дата со значениями часового пояса заданного в параметрах сессии .
У данной функции нет параметров.
Пример использования
ALTER SESSION SET TIME_ZONE = '-3:0';

select CURRENT_TIMESTAMP from dual;


ALTER SESSION SET TIME_ZONE = '-4:0';
select CURRENT_TIMESTAMP from dual;


Смещение часового пояса сессии изменился с -5:0 в -1:0, в результате чего функция CURRENT_TIMESTAMP вернет в качестве значения текущей даты и времени на 4 часа в прошлое.


Преобразование timestamp в date

select systimestamp, cast(systimestamp as date)
from dual

Обратное преобразование из date в timestamp
SELECT CAST(sysdate AS TIMESTAMP) tsdate FROM dual;


Более сложные преобразования типа timestamp
Примеры более сложных преобразований с типом timestamp

TO_TIMESTAMP преобразование строки к типу timestamp

SELECT TO_TIMESTAMP('2011-05-13 07:15:31.1234', 'YYYY-MM-DD HH24:MI:SS.FF')
 FROM dual;


Преобразование временной зоны NEW_TIME
SELECT TO_CHAR(NEW_TIME(TO_DATE('25-12-2016 19:45',
     'DD-MM-YYYY HH24:MI'), 'PST', 'EST'), 'DD-MM-YYYY HH24:MI')
   FROM dual;

Здесь первый параметр , timestamp, второй значение временной зоны из которой преобразуем, третьей значение временной зоны в которую преобразуем
См таблицу
AST Atlantic Standard Time
ADT Atlantic Daylight Saving Time
BST Bering Standard Time
BDT Bering Daylight Saving Time
CST Central Standard Time
CDT Central Daylight Saving Time
EST Eastern Standard Time
EDT Eastern Daylight Saving Time
GMT Greenwich Mean Time (Date Line!)
HST Alaska-Hawaii Standard Time
HDT Alaska-Hawaii Daylight Saving Time
MST Mountain Standard Time
MDT Mountain Daylight Saving Time
NST Newfoundland Standard Time
PST Pacific Standard Time
PDT Pacific Daylight Saving Time
YST Yukon Standard Time
YDT Yukon Daylight Saving Tim


Функция EXTRACT позволяет извлечь следующие значения из timestamp
Пример извлечения TIMEZONE_HOUR
SELECT
      EXTRACT(TIMEZONE_HOUR FROM TO_TIMESTAMP_TZ(
        '01-11-2005 19:15:26 -7:15', 'DD-MM-YYYY HH24:MI:SS TZH:TZM'))
        AS TZH
    FROM dual;


Так же можно выбрать :
Month - месяц
Year - год
Minute - минуту
Second - секунду
TIMEZONE_HOUR – час часовой зоны
TIMEZONE_MINUTE- минуту часовой зоны
TIMEZONE_REGION – регион

 SELECT
      EXTRACT(hour FROM TO_TIMESTAMP_TZ(
        '01-01-2005 19:15:26 -7:15', 'DD-MM-YYYY HH24:MI:SS TZH:TZM'))
        AS hour1
   FROM dual;

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии