Учебники

PostgreSQL — ДАТА / ВРЕМЯ Функции и операторы

Мы обсуждали типы данных Date / Time в главе « Типы данных» . Теперь давайте посмотрим на операторы даты и времени и функции.

В следующей таблице перечислены поведения основных арифметических операторов —

оператор пример Результат
+ дата ‘2001-09-28’ + целое число ‘7’ дата ‘2001-10-05’
+ дата ‘2001-09-28’ + интервал ‘1 час’ метка времени ‘2001-09-28 01:00:00’
+ дата ‘2001-09-28’ + время ’03: 00 ‘ метка времени ‘2001-09-28 03:00:00’
+ интервал «1 день» + интервал «1 час» интервал «1 день 01:00:00»
+ метка времени ‘2001-09-28 01:00’ + интервал ’23 часа ‘ метка времени ‘2001-09-29 00:00:00’
+ время «01: 00» + интервал «3 часа» время ’04: 00: 00 ‘
— интервал «23 часа» интервал ‘-23: 00: 00’
дата ‘2001-10-01’ — дата ‘2001-09-28’ целое число «3» (дни)
дата ‘2001-10-01’ — целое число ‘7’ дата ‘2001-09-24’
дата ‘2001-09-28’ — интервал ‘1 час’ метка времени ‘2001-09-27 23:00:00’
время ’05: 00 ‘- время ’03: 00’ интервал ’02: 00: 00 ‘
время ’05: 00 ‘- интервал’ 2 часа ‘ время ’03: 00: 00 ‘
метка времени ‘2001-09-28 23:00′ — интервал ’23 часов’ метка времени ‘2001-09-28 00:00:00’
интервал «1 день» — интервал «1 час» интервал «1 день -01: 00: 00»
метка времени ‘2001-09-29 03:00’ — метка времени ‘2001-09-27 12:00’ интервал «1 день 15:00:00»
* 900 * интервал «1 секунда» интервал ’00: 15: 00 ‘
* 21 * интервал «1 день» интервал 21 день
* двойная точность ‘3.5’ * интервал ‘1 час’ интервал ’03: 30: 00 ‘
/ интервал «1 час» / двойная точность «1,5» интервал ’00: 40: 00 ‘

Ниже приведен список всех важных функций, связанных с датой и временем.

С. Нет. Описание функции
1 ВОЗРАСТ()

Вычесть аргументы

2 ТЕКУЩАЯ ДАТА / ВРЕМЯ ()

Текущая дата и время

3 Date_part ()

Получить подполе (эквивалентное извлечению)

4 ВЫПИСКА ()

Получить подполе

5 ISFINITE ()

Тест на конечную дату, время и интервал (не +/- бесконечность)

6 ОПРАВДАТЬ

Отрегулируйте интервал

Вычесть аргументы

Текущая дата и время

Получить подполе (эквивалентное извлечению)

Получить подполе

Тест на конечную дату, время и интервал (не +/- бесконечность)

Отрегулируйте интервал

ВОЗРАСТ (временная метка, timestamp), ВОЗРАСТ (временная метка)

С. Нет. Описание функции
1

ВОЗРАСТ (временная метка, timestamp)

Когда вызывается с формой TIMESTAMP второго аргумента, AGE () вычитает аргументы, производя «символический» результат, который использует годы и месяцы и имеет тип INTERVAL.

2

AGE (метка времени)

Когда вызывается только с TIMESTAMP в качестве аргумента, AGE () вычитает из current_date (в полночь).

ВОЗРАСТ (временная метка, timestamp)

Когда вызывается с формой TIMESTAMP второго аргумента, AGE () вычитает аргументы, производя «символический» результат, который использует годы и месяцы и имеет тип INTERVAL.

AGE (метка времени)

Когда вызывается только с TIMESTAMP в качестве аргумента, AGE () вычитает из current_date (в полночь).

Примером функции AGE (timestamp, timestamp) является —

testdb=# SELECT AGE(timestamp '2001-04-10', timestamp '1957-06-13');

Приведенный выше оператор PostgreSQL даст следующий результат:

           age
-------------------------
 43 years 9 mons 27 days

Примером функции AGE (отметка времени) является —

testdb=# select age(timestamp '1957-06-13');

Приведенный выше оператор PostgreSQL даст следующий результат:

           age
--------------------------
 55 years 10 mons 22 days

ТЕКУЩАЯ ДАТА / ВРЕМЯ ()

PostgreSQL предоставляет ряд функций, которые возвращают значения, связанные с текущей датой и временем. Ниже приведены некоторые функции —

С. Нет. Описание функции
1

ТЕКУЩАЯ ДАТА

Поставляет текущую дату.

2

ТЕКУЩЕЕ ВРЕМЯ

Поставляет значения с часовым поясом.

3

CURRENT_TIMESTAMP

Поставляет значения с часовым поясом.

4

CURRENT_TIME (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

5

CURRENT_TIMESTAMP (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

6

МЕСТНОЕ ВРЕМЯ

Доставляет значения без часового пояса.

7

LOCALTIMESTAMP

Доставляет значения без часового пояса.

8

МестноеВремя (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

9

LOCALTIMESTAMP (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

ТЕКУЩАЯ ДАТА

Поставляет текущую дату.

ТЕКУЩЕЕ ВРЕМЯ

Поставляет значения с часовым поясом.

CURRENT_TIMESTAMP

Поставляет значения с часовым поясом.

CURRENT_TIME (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

CURRENT_TIMESTAMP (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

МЕСТНОЕ ВРЕМЯ

Доставляет значения без часового пояса.

LOCALTIMESTAMP

Доставляет значения без часового пояса.

МестноеВремя (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

LOCALTIMESTAMP (точность)

При желании принимает параметр точности, который приводит к тому, что результат округляется до такого количества дробных цифр в поле секунд.

Примеры использования функций из таблицы выше —

testdb=# SELECT CURRENT_TIME;
       timetz
--------------------
 08:01:34.656+05:30
(1 row)


testdb=# SELECT CURRENT_DATE;
    date
------------
 2013-05-05
(1 row)


testdb=# SELECT CURRENT_TIMESTAMP;
              now
-------------------------------
 2013-05-05 08:01:45.375+05:30
(1 row)


testdb=# SELECT CURRENT_TIMESTAMP(2);
         timestamptz
------------------------------
 2013-05-05 08:01:50.89+05:30
(1 row)


testdb=# SELECT LOCALTIMESTAMP;
       timestamp
------------------------
 2013-05-05 08:01:55.75
(1 row)

PostgreSQL также предоставляет функции, которые возвращают время начала текущего оператора, а также фактическое текущее время в момент вызова функции. Эти функции —

С. Нет. Описание функции
1

transaction_timestamp ()

Он эквивалентен CURRENT_TIMESTAMP, но назван так, чтобы четко отражать, что он возвращает.

2

statement_timestamp ()

Возвращает время начала текущего оператора.

3

clock_timestamp ()

Он возвращает текущее текущее время, и, следовательно, его значение изменяется даже в пределах одной команды SQL.

4

TimeOfDay ()

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

5

сейчас()

Это традиционный PostgreSQL, эквивалентныйaction_timestamp ().

transaction_timestamp ()

Он эквивалентен CURRENT_TIMESTAMP, но назван так, чтобы четко отражать, что он возвращает.

statement_timestamp ()

Возвращает время начала текущего оператора.

clock_timestamp ()

Он возвращает текущее текущее время, и, следовательно, его значение изменяется даже в пределах одной команды SQL.

TimeOfDay ()

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

сейчас()

Это традиционный PostgreSQL, эквивалентныйaction_timestamp ().

DATE_PART (текст, метка времени), DATE_PART (текст, интервал), DATE_TRUNC (текст, метка времени)

С. Нет. Описание функции
1

DATE_PART (‘поле’, источник)

Эти функции получают подполя. Параметр поля должен быть строковым значением, а не именем.

Допустимые имена полей: век, день, декада, доу, дой, эпоха, час, изода, год, микросекунды, тысячелетия, миллисекунды, минуты, месяц, квартал, секунда, часовой пояс, часовой пояс_час, часовой пояс_минута, неделя, год.

2

DATE_TRUNC (‘field’, source)

Эта функция концептуально аналогична функции усечения для чисел. source — это выражение значения типа timestamp или interval. поле выбирает, с какой точностью обрезать входное значение. Возвращаемое значение имеет тип отметки времени или интервала .

Допустимые значения для поля : микросекунды, миллисекунды, секунды, минуты, часы, день, неделя, месяц, квартал, год, десятилетие, век, тысячелетия

DATE_PART (‘поле’, источник)

Эти функции получают подполя. Параметр поля должен быть строковым значением, а не именем.

Допустимые имена полей: век, день, декада, доу, дой, эпоха, час, изода, год, микросекунды, тысячелетия, миллисекунды, минуты, месяц, квартал, секунда, часовой пояс, часовой пояс_час, часовой пояс_минута, неделя, год.

DATE_TRUNC (‘field’, source)

Эта функция концептуально аналогична функции усечения для чисел. source — это выражение значения типа timestamp или interval. поле выбирает, с какой точностью обрезать входное значение. Возвращаемое значение имеет тип отметки времени или интервала .

Допустимые значения для поля : микросекунды, миллисекунды, секунды, минуты, часы, день, неделя, месяц, квартал, год, десятилетие, век, тысячелетия

Ниже приведены примеры функций DATE_PART ( ‘field’ , source):

testdb=# SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
 date_part
-----------
        16
(1 row)


testdb=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes');
 date_part
-----------
         4
(1 row)

Ниже приведены примеры функций DATE_TRUNC ( ‘field’ , source):

testdb=# SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
     date_trunc
---------------------
 2001-02-16 20:00:00
(1 row)


testdb=# SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
     date_trunc
---------------------
 2001-01-01 00:00:00
(1 row)

EXTRACT (поле из метки времени), EXTRACT (поле из интервала)

Функция EXTRACT (поле FROM source) извлекает подполя, такие как год или час, из значений даты / времени. Источник должен быть выражением значения типа timestamp, time или interval . Поле является идентификатором или строкой, которая выбирает, какое поле извлечь из исходного значения. Функция EXTRACT возвращает значения типа двойной точности .

Ниже приведены допустимые имена полей (аналогично именам полей функции DATE_PART): век, день, декада, доу, дой, эпоха, час, изода, год, микросекунды, тысячелетия, миллисекунды, минуты, месяц, квартал, секунда, часовой пояс, часовой пояс_час , timezone_minute, неделя, год.

Ниже приведены примеры функций EXTRACT ( ‘field’ , source):

testdb=# SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');
 date_part
-----------
        20
(1 row)


testdb=# SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');
 date_part
-----------
        16
(1 row)

ISFINITE (дата), ISFINITE (метка времени), ISFINITE (интервал)

С. Нет. Описание функции
1

ISFINITE (дата)

Тесты на конечную дату.

2

ISFINITE (метка времени)

Тесты на конечную отметку времени.

3

ISFINITE (интервал)

Тесты на конечный интервал.

ISFINITE (дата)

Тесты на конечную дату.

ISFINITE (метка времени)

Тесты на конечную отметку времени.

ISFINITE (интервал)

Тесты на конечный интервал.

Ниже приведены примеры функций ISFINITE ():

testdb=# SELECT isfinite(date '2001-02-16');
 isfinite
----------
 t
(1 row)


testdb=# SELECT isfinite(timestamp '2001-02-16 21:28:30');
 isfinite
----------
 t
(1 row)


testdb=# SELECT isfinite(interval '4 hours');
 isfinite
----------
 t
(1 row)

JUSTIFY_DAYS (интервал), JUSTIFY_HOURS (интервал), JUSTIFY_INTERVAL (интервал)

С. Нет. Описание функции
1

JUSTIFY_DAYS (интервал)

Настраивает интервал так, чтобы 30-дневные периоды времени были представлены месяцами. Вернуть тип интервала

2

JUSTIFY_HOURS (интервал)

Настраивает интервал, чтобы 24-часовой период времени отображался в днях. Вернуть тип интервала

3

JUSTIFY_INTERVAL (интервал)

Регулирует интервал с помощью JUSTIFY_DAYS и JUSTIFY_HOURS, с дополнительными настройками знака. Вернуть тип интервала

JUSTIFY_DAYS (интервал)

Настраивает интервал так, чтобы 30-дневные периоды времени были представлены месяцами. Вернуть тип интервала

JUSTIFY_HOURS (интервал)

Настраивает интервал, чтобы 24-часовой период времени отображался в днях. Вернуть тип интервала

JUSTIFY_INTERVAL (интервал)

Регулирует интервал с помощью JUSTIFY_DAYS и JUSTIFY_HOURS, с дополнительными настройками знака. Вернуть тип интервала

Ниже приведены примеры для функций ISFINITE ():