В этой главе мы обсудим дату и время в 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 в ИНТЕРВАЛЬНЫЙ ГОД В МЕСЯЦ.