logo

Інтервал PostgreSQL

У цьому розділі ми збираємося зрозуміти роботу Тип даних PostgreSQL Interval, і ми теж бачимо приклади з Інтервальний тип даних. І в основному використовується Interval функції , наприклад, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). The Вхід і вихід формат для значень інтервалів PostgreSQL.

Що таке інтервальний тип даних PostgreSQL?

У PostgreSQL, Інтервал це ще один тип даних, який використовується для зберігання та розгортання часу роки, місяці, дні, години, хвилини, секунди, і т. д. І місяці і дні цінності є цілі значення , тоді як друге поле може бути значення дробів.

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

if-else java

Примітка. Кількість цифр дробу, взята в другому полі, відома як точність 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 працює.

У прикладі нижче ми спробуємо знайти час за 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

У 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 ] 

І це також починається з буква П і буква Т, який розколює час і дата частини значення інтервалу.

Наприклад, Альтернативна форма 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 інтервальний вихідний формат:

завантажити відео з youtube на vlc
Інтервал PostgreSQL

Для вихідного формату Postgres

У команді нижче ми це зробимо НАБІР в інтервальний стиль як Postgres для вищезгаданого значення інтервалу:

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

Вихід

Ми отримаємо наведений нижче результат після успішного виконання команди вище, яка показує Postgres інтервальний вихідний формат:

Інтервал PostgreSQL

Для стандартного формату виводу Sql

У команді нижче ми це зробимо НАБІР в інтервальний стиль як 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'; 

Вихід

Виконавши наведену вище команду, ми отримаємо наступний результат:

Інтервал 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_interval функція регулює значення інтервалу за допомогою justify_days і justify_hours з доданими змінами знака:

У наступному прикладі ми використаємо функцію justifiy_interval із командою SELECT:

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

Вихід

Після виконання наведеної вище команди ми отримаємо наступний результат:

Інтервал PostgreSQL

Огляд

В Інтервальний тип даних PostgreSQL ми вивчили такі теми:

  • The Інтервальні дані PostgreSQL тип використовується для зберігання та розгортання періоду в роки, місяці, дні, години, хвилини, секунди.
  • Ми використовували різні Інтервальні функції , наприклад, NOW(), TO_CHAR(), для покращення значень інтервалів із конкретної таблиці.
  • Значення інтервалів PostgreSQL мають обидва вхід і вихід інтервальний формат.
  • Ми можемо налаштувати значення інтервалів PostgreSQL за допомогою функції justify_days(), justify_hours, justify_interval().
  • Ми можемо використовувати ВИПИСИ() функція для отримання значень полів інтервалу.