Мы обсуждали типы данных 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 ():