Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет44/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   40   41   42   43   44   45   46   47   ...   256
sql osnovi yazika

Глава 4. Типы данных СУБД PostgreSQL
В результате объединения типов даты и времени получается интегральный тип —
временная отметка. Этот тип существует в двух вариантах: с учетом часового поя-
са — timestamp with time zone, либо без учета часового пояса — timestamp. Для
первого варианта существует сокращенное наименование — timestamptz, которое
является расширением PostgreSQL. При вводе и выводе значений этого типа данных
используются соответствующие форматы ввода и вывода даты и времени. Вот при-
мер с учетом часового пояса:
SELECT timestamp with time zone '2016-09-21 22:25:35';
timestamptz
------------------------
2016-09-21 22:25:35+03
(1 строка)
Обратите внимание, что хотя мы не указали явно значение часового пояса при вводе
данных, при выводе это значение +03 было добавлено.
А это пример без учета часового пояса:
SELECT timestamp '2016-09-21 22:25:35';
timestamp
---------------------
2016-09-21 22:25:35
(1 строка)
В рассмотренных примерах мы использовали синтаксис тип 'строка' для указа-
ния конкретного типа простой литеральной константы. Имя типа мы указывали не
после преобразуемого литерала, а перед ним, например, timestamp '2016-09-21
22:25:35'. Строго говоря, это не является операцией приведения типа, хотя и по-
хоже на нее. Подробно данный вопрос рассмотрен в разделах документации 4.1.2.7
«Константы других типов» и 4.2.9 «Приведения типов».
Для получения значения текущей временн´ой отметки (т. е. даты и времени в одном
значении) служит функция current_timestamp. Она также вызывается без указа-
ния круглых скобок. Приведем пример ее использования.
SELECT current_timestamp;
now
-------------------------------
2016-09-27 18:27:37.767739+03
(1 строка)
60


4.3. Типы «дата/время»
Здесь в выводе присутствует и часовой пояс: +03.
Оба типа — timestamp и timestamptz — занимают один и тот же объем 8 байтов, но
значения типа timestamptz хранятся, будучи приведенными к нулевому часовому
поясу (UTC), а перед выводом приводятся к часовому поясу пользователя.
На практике при принятии решения о том, какой из этих двух типов — timestamp
или timestamptz — использовать, необходимо учитывать, требуется ли значения,
хранящиеся в таблице, приводить к местному часовому поясу или не требуется. На-
пример, в расписании авиарейсов указывается местное время как для аэропорта от-
правления, так и для аэропорта прибытия. Поэтому в таком случае нужно использо-
вать тип timestamp, чтобы это время не приводилось к текущему часовому поясу
пользователя, где бы он ни находился.
Из двух этих типов данных чаще используется timestamptz.
Последним типом является interval, который представляет продолжительность от-
резка времени между двумя моментами времени. Его формат ввода таков:


Достарыңызбен бөлісу:
1   ...   40   41   42   43   44   45   46   47   ...   256




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет