logo

Интервал на PostgreSQL

В този раздел ще разберем работата на PostgreSQL Interval тип данни, и ние също виждаме примери от Интервален тип данни. И най-често се използва Interval функции , например, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). The Вход и изход формат за стойности на интервали на PostgreSQL.

Какво е PostgreSQL Interval Data Type?

В PostgreSQL, Интервал е друг тип тип данни, използван за съхраняване и разгръщане на времето години, месеци, дни, часове, минути, секунди, и т.н месеци и дни ценностите са цели числа , като има предвид, че второ поле може да бъде стойности на дроби.

PostgreSQL интервал тип данни стойност включва 16 байта за съхранение размер, който помага за съхраняване на период с приемливия диапазон от - 178000000 години до 178000000 години.

най-хубавата усмивка на света

Забележка: Броят на дробните цифри, взети във второто поле, е известен като точност p.

Синтаксис на типа данни PostgreSQL Interval

Синтаксисът на типа данни PostgreSQL Interval е както следва:

 @ interval [ fields ] [ (p) ] 

В горния синтаксис имаме следните параметри:

Параметър Описание
полета Параметърът на полето се използва за показване на времето.
стр P се използва за показване на прецизна стойност.
@ Можем да игнорираме параметъра @, тъй като той е незадължителен параметър.

Нека видим примерен пример, за да разберем по-добре как можем да напишем стойностите на интервала с @ параметър и без @ параметър :

 @interval '6 months before'; @interval '2 hours 30 minutes'; 

ИЛИ

 interval '6 months before'; interval '2 hours 30 minutes'; 

Забележка: Можем да използваме и двете горни твърдения, тъй като те съответстват едно на друго. Освен това стойността на интервала може да има избираема стойност на точност p, като разрешеният диапазон започва от 0 до 6.

Пример за тип данни PostgreSQL Interval

Нека видим един примерен пример, за да разберем как PostgreSQL Interval тип данни върши работа.

В примера по-долу ще се опитаме да намерим часа на 2 часа и 30 минути преди това, при текущо време от миналата година ; ще използваме следните команди:

 SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year'; 

Изход

След като изпълним горната команда, ще получим изхода по-долу, който се показва 2 часа и 30 минути преди миналата година :

Интервал на PostgreSQL

Видяхме основния пример за интервален тип данни и разбираме работата му. Сега ще видим входния и изходния формат на интервални стойности.

Първо, ще разберем PostgreSQL интервална стойност за входния формат :

PostgreSQL Interval Input Format

В PostgreSQL имаме следното подробен синтаксис, което ни помага да напишем стойностите на интервала:

 quantity unit [quantity unit...] [direction] 

Имаме следните параметри, които се използват в горния синтаксис:

Параметър Описание
количество А количество е число, което също приема знаци като + или -
мерна единица The мерна единица може да бъде всеки хилядолетие, век, десетилетие, година, месец, седмица, ден, час, минута, секунда, милисекунда, микросекунда, или съкращението може да бъде следното y, m, d и т.н. и формите за множествено число могат да бъдат месеци, дни и т.н.
посока The посока параметър може да бъде преди или празния низ.

Забележка: Синтаксисът по-горе се използва и за интервален изходен формат и е известен като postgres_verbose.

В примера по-долу ще покажем някои интервални стойности, където използваме подробен синтаксис :

 INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago'; 

Интервалният формат ISO 8601

Освен многословния синтаксис по-горе, за запис на интервалните стойности с помощта на ISO 8601-време интервали, PostgreSQL ни предоставя два начина, които са както следва:

    Формат на обозначителите Алтернативен формат

Форматът на обозначенията за ISO 8601 е както следва:

 P quantity unit [ quantity unit ...] [ T [ quantity unit ...]] 

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

Таблицата по-долу показва Интервал ISO 8601 съкращения на единици:

Съкращение Описание
И години
М Месеци (за датата)
IN седмици
д Дни
з Часа
М Минути (за времевата част)
С Секунди

Забележка: M може да бъде месеци или минути в зависимост от това дали изглежда преди или след буквата T.

Нека видим пример за Обозначения по ISO 8601 формат за нашето по-добро разбиране:

The Формат на обозначения по ISO 8601 може да се запише за интервала от 5 години 4 месеца 3 дни 2 часа 1 минута 1 секунда :

 P5Y4M3DT2H1M1S 

И алтернативната форма на ISO 8601 е както е показано по-долу:

 P [ years-months-days ] [ T hours:minutes:seconds ] 

И също започва с буквата P и буквата T, което разделя на час и дата части от стойността на интервала.

Например, на ISO 8601 алтернативна форма може да се напише за 5 години 4 месеца 3 дни 2 часа 1 минута 1 секунда, както е показано по-долу:

 P0005-04-03T02:01:01 

Интервален изходен формат на PostgreSQL

Интервалният изходен формат на PostgreSQL на интервалните стойности може да бъде зададен с помощта на КОМПЛЕКТ интервален стил команда, както можем да видим в примера по-долу:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL съдържа четири различни изходни формата, като например:

    iso_8601 postgres_verbose Postgres sql стандарт

Забележка: За да форматира стойностите на интервала, PostgreSQL използва стила на Postgres по подразбиране.

Нека видим пример за нашето по-добро разбиране:

Командата по-долу се използва за показване на 5 години 4 месеца 3 дни 2 часа 1 минута 1 секунда в четирите различни изходни формата:

За ISO_8601 изходен формат

В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като iso_8601 за горепосочената стойност на интервала:

 SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second'; 

Изход

След като изпълним горната команда, ще получим резултата по-долу, който представлява iso_8601 интервален изходен формат:

Интервал на PostgreSQL

За изходен формат postgres_verbose

В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като postgres_verbose за горепосочената стойност на интервала:

 SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Изход

Ще получим резултата по-долу след прилагане на горната команда, която показва postgres_verbose интервален изходен формат:

примерно двоично дърво за търсене
Интервал на PostgreSQL

За изходен формат на Postgres

В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като Postgres за горепосочената стойност на интервала:

 SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Изход

Ще получим резултата по-долу след успешното изпълнение на горната команда, която показва Postgres интервален изходен формат:

Интервал на PostgreSQL

За Sql_standard изходен формат

В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като sql_standard за горепосочената стойност на интервала:

 SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second'; 

Изход

Ще получим резултата по-долу след успешното изпълнение на горната команда, която представлява sql_standard интервален изходен формат:

Интервал на PostgreSQL

Промяна на интервала на PostgreSQL в низ

Можем да използваме TO_CHAR() функция за промяна на стойност на интервал в низ.

Синтаксисът за промяна на интервала на PostgreSQL в низ

 TO_CHAR(interval,format) 

The Функция TO_CHAR(). взема първо твърдение като интервална стойност и още един като формат и извлича низ, показващ интервала в конкретния формат.

В примера по-долу ще използваме функцията TO_CHAR(), която преобразува интервала на PostgreSQL в стойността на низа:

 SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' ); 

Изход

След успешното изпълнение на горната команда ще получим резултата по-долу:

Интервал на PostgreSQL

Оператори и функции, свързани с интервали на PostgreSQL

Интервални оператори

Можем да използваме следното +, -, * и др. аритметичен оператор за да получите стойностите на интервала.

Нека видим примера по-долу за по-добро разбиране:

В следващата команда ще използваме аритметичен оператор (+) с помощта на интервалния тип данни на PostgreSQL:

 SELECT INTERVAL '1h 50m' + INTERVAL '5m'; 

Изход

Ще получим резултата по-долу при изпълнение на горната команда, както е показано по-долу:

Интервал на PostgreSQL

В следващата команда ще използваме аритметичен оператор (-) с помощта на интервалния тип данни на PostgreSQL:

 SELECT INTERVAL '3h 50m' - INTERVAL '30m'; 

Изход

При прилагането на горната команда ще получим следния резултат:

java архитектура
Интервал на PostgreSQL

В следващата команда ще използваме аритметичен оператор (*) с помощта на интервалния тип данни на PostgreSQL:

 SELECT 400 * INTERVAL '5 minute'; 

Изход

При прилагането на горната команда ще получим следния резултат:

Интервал на PostgreSQL

Извличане на данни от интервал на PostgreSQL

Можем да използваме ЕКСТРАКТ() функция за извличане на полетата от стойност на интервал, например година, месец, дата и др .

Синтаксисът за извличане на данни от интервал на PostgreSQL

 EXTRACT(field FROM interval) 

В горния синтаксис можем да използваме година, месец, дата, час, минути , и т.н., в параметъра на полето.

The екстракт функцията връща стойност от тип двойна точност, ако искаме да извлечем от интервала.

В следващия пример ще използваме ЕКСТРАКТ() функция за извличане на стойността с двойна точност.

 SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' ); 

Изход

След успешното изпълнение на горната команда, ще получим изхода по-долу, който показва част за дата за двойна точност стойности, както е показано по-долу:

Интервал на PostgreSQL

Коригиране на стойностите на интервалите на PostgreSQL

Имаме две функции, justify_days и justify_hours в PostgreSQL, което ни позволява да променяме интервал от 24 часа считам за един ден и интервалът на 30-дневен считам за един месец .

Нека видим пример, за да разберем как коригираме стойностите на интервалите на PostgreSQL:

В следващата команда ще използваме функция justify_days и justify_hours:

 SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours'); 

Изход

След като изпълним горната команда, ще получим следния резултат, който показва интервала на 30 дни като един месец и на интервал от 24 часа като един ден :

Интервал на PostgreSQL

Освен това, оправдаване_интервал функция регулира интервалните стойности с помощта на justify_days и justify_hours с добавени модификации на знака:

В следващия пример ще използваме функцията justifiy_interval с командата SELECT:

 SELECT justify_interval(interval '6 months -1 hour'); 

Изход

Ще получим следния резултат след изпълнение на горната команда:

Интервал на PostgreSQL

Преглед

В PostgreSQL Interval тип данни раздел научихме следните теми:

  • The Интервални данни на PostgreSQL тип се използва за съхраняване и внедряване на период в години, месеци, дни, часове, минути, секунди.
  • Използвахме различни Интервални функции , например, NOW(), TO_CHAR(), за подобряване на стойностите на интервала от конкретната таблица.
  • Стойностите на интервалите на PostgreSQL имат и двете вход и изход интервален формат.
  • Можем да коригираме стойностите на интервалите на PostgreSQL с помощта на функциите justify_days(), justify_hours, justify_interval().
  • Можем да използваме ЕКСТРАКТ() функция за извличане на стойностите на интервалните полета.