В този раздел ще разберем работата на 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 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 съдържа четири различни изходни формата, като например:
Забележка: За да форматира стойностите на интервала, 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 интервален изходен формат:
За изходен формат postgres_verbose
В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като postgres_verbose за горепосочената стойност на интервала:
SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Изход
Ще получим резултата по-долу след прилагане на горната команда, която показва postgres_verbose интервален изходен формат:
примерно двоично дърво за търсене
За изходен формат на Postgres
В командата по-долу ще го направим КОМПЛЕКТ на интервален стил като Postgres за горепосочената стойност на интервала:
SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Изход
Ще получим резултата по-долу след успешното изпълнение на горната команда, която показва Postgres интервален изходен формат:
За 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 в низ
Можем да използваме 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:
SELECT INTERVAL '1h 50m' + INTERVAL '5m';
Изход
Ще получим резултата по-долу при изпълнение на горната команда, както е показано по-долу:
В следващата команда ще използваме аритметичен оператор (-) с помощта на интервалния тип данни на PostgreSQL:
SELECT INTERVAL '3h 50m' - INTERVAL '30m';
Изход
При прилагането на горната команда ще получим следния резултат:
java архитектура
В следващата команда ще използваме аритметичен оператор (*) с помощта на интервалния тип данни на PostgreSQL:
SELECT 400 * INTERVAL '5 minute';
Изход
При прилагането на горната команда ще получим следния резултат:
Извличане на данни от интервал на PostgreSQL
Можем да използваме ЕКСТРАКТ() функция за извличане на полетата от стойност на интервал, например година, месец, дата и др .
Синтаксисът за извличане на данни от интервал на PostgreSQL
EXTRACT(field FROM interval)
В горния синтаксис можем да използваме година, месец, дата, час, минути , и т.н., в параметъра на полето.
The екстракт функцията връща стойност от тип двойна точност, ако искаме да извлечем от интервала.
В следващия пример ще използваме ЕКСТРАКТ() функция за извличане на стойността с двойна точност.
SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' );
Изход
След успешното изпълнение на горната команда, ще получим изхода по-долу, който показва част за дата за двойна точност стойности, както е показано по-долу:
Коригиране на стойностите на интервалите на 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 часа като един ден :
Освен това, оправдаване_интервал функция регулира интервалните стойности с помощта на justify_days и justify_hours с добавени модификации на знака:
В следващия пример ще използваме функцията justifiy_interval с командата SELECT:
SELECT justify_interval(interval '6 months -1 hour');
Изход
Ще получим следния резултат след изпълнение на горната команда:
Преглед
В PostgreSQL Interval тип данни раздел научихме следните теми:
- The Интервални данни на PostgreSQL тип се използва за съхраняване и внедряване на период в години, месеци, дни, часове, минути, секунди.
- Използвахме различни Интервални функции , например, NOW(), TO_CHAR(), за подобряване на стойностите на интервала от конкретната таблица.
- Стойностите на интервалите на PostgreSQL имат и двете вход и изход интервален формат.
- Можем да коригираме стойностите на интервалите на PostgreSQL с помощта на функциите justify_days(), justify_hours, justify_interval().
- Можем да използваме ЕКСТРАКТ() функция за извличане на стойностите на интервалните полета.