Учебники

PL / SQL — дата и время

В этой главе мы обсудим дату и время в PL / SQL. В PL / SQL есть два класса типов данных, связанных с датой и временем:

  • Типы данных Datetime
  • Интервальные типы данных

Типы данных Datetime —

  • ДАТА
  • TIMESTAMP
  • TIMESTAMP с зоной времени
  • TIMESTAMP с локальной зоной времени

Типы данных Interval —

  • ИНТЕРВАЛ ГОДА В МЕСЯЦ
  • ИНТЕРВАЛЬНЫЙ ДЕНЬ ВТОРОЙ

Значения полей для типов данных Datetime и Interval

Типы данных datetime и interval состоят из полей . Значения этих полей определяют значение типа данных. В следующей таблице перечислены поля и их возможные значения для даты и времени.

Имя поля Допустимые значения даты и времени Допустимые значения интервала
ГОД От -4712 до 9999 (исключая год 0) Любое ненулевое целое число
МЕСЯЦ 01 до 12 От 0 до 11
ДЕНЬ С 01 по 31 (ограничено значениями MONTH и YEAR в соответствии с правилами календаря для локали) Любое ненулевое целое число
ЧАС От 00 до 23 От 0 до 23
МИНУТЫ От 00 до 59 От 0 до 59
ВТОРОЙ

От 00 до 59,9 (n), где 9 (n) — точность долей времени в секундах

9 (n) часть не относится к DATE.

От 0 до 59,9 (n), где 9 (n) — точность интервала долей секунд
TIMEZONE_HOUR

От -12 до 14 (диапазон учитывает изменения летнего времени)

Не применимо для DATE или TIMESTAMP.

Непригодный
TIMEZONE_MINUTE

От 00 до 59

Не применимо для DATE или TIMESTAMP.

Непригодный
TIMEZONE_REGION Не применимо для DATE или TIMESTAMP. Непригодный
TIMEZONE_ABBR Не применимо для DATE или TIMESTAMP. Непригодный

От 00 до 59,9 (n), где 9 (n) — точность долей времени в секундах

9 (n) часть не относится к DATE.

От -12 до 14 (диапазон учитывает изменения летнего времени)

Не применимо для DATE или TIMESTAMP.

От 00 до 59

Не применимо для DATE или TIMESTAMP.

Типы данных Datetime и функции

Ниже приведены типы данных Datetime —

ДАТА

Он хранит информацию о дате и времени в типах символов и чисел. Он состоит из информации о столетии, году, месяце, дате, часах, минутах и ​​секундах. Это указано как —

TIMESTAMP

Это расширение типа данных DATE. Здесь хранятся год, месяц и день типа данных DATE, а также значения часов, минут и секунд. Это полезно для хранения точных значений времени.

TIMESTAMP с зоной времени

Это вариант TIMESTAMP, который включает в себя имя региона часового пояса или смещение часового пояса. Смещение часового пояса — это разница (в часах и минутах) между местным временем и UTC. Этот тип данных полезен для сбора и оценки информации о дате по географическим регионам.

TIMESTAMP с локальной зоной времени

Это еще один вариант TIMESTAMP, который включает в себя смещение часового пояса в своем значении.

В следующей таблице представлены функции Datetime (где x имеет значение datetime) —

S.No Название и описание функции
1

ADD_MONTHS (x, y);

Добавляет y месяцев к x .

2

LAST_DAY (х);

Возвращает последний день месяца.

3

MONTHS_BETWEEN (x, y);

Возвращает количество месяцев между x и y .

4

NEXT_DAY (x, день);

Возвращает дату и время следующего дня после x .

5

НОВОЕ ВРЕМЯ;

Возвращает значение времени / дня из часового пояса, указанного пользователем.

6

КРУГЛЫЙ (х [, единица измерения]);

Раунды х .

7

SYSDATE ();

Возвращает текущую дату и время.

8

TRUNC (x [, единица измерения]);

Усеченные х .

ADD_MONTHS (x, y);

Добавляет y месяцев к x .

LAST_DAY (х);

Возвращает последний день месяца.

MONTHS_BETWEEN (x, y);

Возвращает количество месяцев между x и y .

NEXT_DAY (x, день);

Возвращает дату и время следующего дня после x .

НОВОЕ ВРЕМЯ;

Возвращает значение времени / дня из часового пояса, указанного пользователем.

КРУГЛЫЙ (х [, единица измерения]);

Раунды х .

SYSDATE ();

Возвращает текущую дату и время.

TRUNC (x [, единица измерения]);

Усеченные х .

Функции отметки времени (где x имеет значение отметки времени) —

S.No Название и описание функции
1

CURRENT_TIMESTAMP ();

Возвращает TIMESTAMP WITH TIME ZONE, содержащую текущее время сеанса вместе с часовым поясом сеанса.

2

EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} | {TIMEZONE_HOUR | TIMEZONE_MINUTE} | {TIMEZONE_REGION |} TIMEZONE_ABBR) ОТ x)

Извлекает и возвращает год, месяц, день, час, минуту, секунду или часовой пояс из x .

3

FROM_TZ (x, часовой пояс);

Преобразует TIMESTAMP x и часовой пояс, заданный time_zone, в TIMESTAMP WITH TIMEZONE.

4

LOCALTIMESTAMP ();

Возвращает TIMESTAMP, содержащий местное время в часовом поясе сеанса.

5

SYSTIMESTAMP ();

Возвращает TIMESTAMP WITH TIME ZONE, содержащую текущее время базы данных вместе с часовым поясом базы данных.

6

SYS_EXTRACT_UTC (х);

Преобразует TIMESTAMP WITH TIMEZONE x в TIMESTAMP, содержащий дату и время в формате UTC.

7

TO_TIMESTAMP (x, [формат]);

Преобразует строку x в TIMESTAMP.

8

TO_TIMESTAMP_TZ (x, [формат]);

Преобразует строку x в TIMESTAMP WITH TIMEZONE.

CURRENT_TIMESTAMP ();

Возвращает TIMESTAMP WITH TIME ZONE, содержащую текущее время сеанса вместе с часовым поясом сеанса.

EXTRACT ({YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} | {TIMEZONE_HOUR | TIMEZONE_MINUTE} | {TIMEZONE_REGION |} TIMEZONE_ABBR) ОТ x)

Извлекает и возвращает год, месяц, день, час, минуту, секунду или часовой пояс из x .

FROM_TZ (x, часовой пояс);

Преобразует TIMESTAMP x и часовой пояс, заданный time_zone, в TIMESTAMP WITH TIMEZONE.

LOCALTIMESTAMP ();

Возвращает TIMESTAMP, содержащий местное время в часовом поясе сеанса.

SYSTIMESTAMP ();

Возвращает TIMESTAMP WITH TIME ZONE, содержащую текущее время базы данных вместе с часовым поясом базы данных.

SYS_EXTRACT_UTC (х);

Преобразует TIMESTAMP WITH TIMEZONE x в TIMESTAMP, содержащий дату и время в формате UTC.

TO_TIMESTAMP (x, [формат]);

Преобразует строку x в TIMESTAMP.

TO_TIMESTAMP_TZ (x, [формат]);

Преобразует строку x в TIMESTAMP WITH TIMEZONE.

Примеры

Следующие фрагменты кода иллюстрируют использование вышеуказанных функций —

Пример 1

SELECT SYSDATE FROM DUAL; 

Выход

08/31/2012 5:25:34 PM 

Пример 2

SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL; 

Выход

31-08-2012 05:26:14

Пример 3

SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

Выход

01/31/2013 5:26:31 PM 

Пример 4

SELECT LOCALTIMESTAMP FROM DUAL; 

Выход

8/31/2012 5:26:55.347000 PM 

Интервальные типы данных и функции

Ниже приведены типы данных Interval —

IINTERVAL YEAR TO MONTH — хранит период времени, используя поля даты и года YEAR и MONTH.

ИНТЕРВАЛЬНЫЙ ДЕНЬ ВТОРОГО — хранит период времени в днях, часах, минутах и ​​секундах.

NUMTODSINTERVAL (x, interval_unit);

Преобразует число х в ИНТЕРВАЛЬНЫЙ ДЕНЬ ВТОРОЙ.

NUMTOYMINTERVAL (x, interval_unit);

Преобразует число x в ИНТЕРВАЛЬНЫЙ ГОД В МЕСЯЦ.

TO_DSINTERVAL (х);

Преобразует строку x в ИНТЕРВАЛЬНЫЙ ДЕНЬ ВТОРОЙ.

TO_YMINTERVAL (х);

Преобразует строку x в ИНТЕРВАЛЬНЫЙ ГОД В МЕСЯЦ.