logo

PostgreSQL intervāls

Šajā sadaļā mēs sapratīsim, kā darbojas PostgreSQL intervāla datu tips, un mēs arī redzam piemēri no Intervāla datu tips. Un galvenokārt izmanto Interval funkcijas , piemēram, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). The Ievade un izvade formāts PostgreSQL intervāla vērtībām.

Kas ir PostgreSQL intervāla datu tips?

Programmā PostgreSQL, Intervāls ir cita veida datu tips, ko izmanto laika glabāšanai un izvietošanai gadi, mēneši, dienas, stundas, minūtes, sekundes, utt. Un mēneši un dienas vērtības ir veselu skaitļu vērtības , savukārt otrā lauks var būt daļskaitļu vērtības.

PostgreSQL intervāla datu tipa vērtība ietver 16 baitu krātuve izmērs, kas palīdz saglabāt periodu ar pieņemamu diapazonu no - 178000000 gadu līdz 178000000 gadiem.

mockito jebkurā laikā

Piezīme. Otrajā laukā uzņemto daļskaitļu skaitu sauc par precizitāti p.

PostgreSQL intervāla datu tipa sintakse

PostgreSQL intervāla datu tipa sintakse ir šāda:

 @ interval [ fields ] [ (p) ] 

Iepriekš minētajā sintaksē mums ir šādi parametri:

Parametrs Apraksts
lauki Lauka parametrs tiek izmantots, lai parādītu laiku.
lpp P tiek izmantots, lai parādītu precizitātes vērtību.
@ Mēs varam ignorēt @ parametru, jo tas ir neobligāts parametrs.

Apskatīsim piemēru, lai labāk izprastu, kā mēs varam rakstīt intervāla vērtības ar @ parametrs un bez @ parametra :

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

VAI

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

Piezīme. Mēs varam izmantot abus iepriekš minētos apgalvojumus, jo tie atbilst viens otram. Turklāt intervāla vērtībai var būt izvēles precizitātes vērtība p ar atļauto diapazonu no 0 līdz 6.

PostgreSQL intervāla datu tipa piemērs

Apskatīsim vienu piemēru piemērus, lai saprastu, kā PostgreSQL intervāla datu tips darbojas.

Zemāk esošajā piemērā mēs mēģināsim atrast laiku 2 stundas 30 minūtes iepriekš, pie pašreizējais pagājušā gada laiks ; mēs izmantosim šādas komandas:

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

Izvade

Pēc iepriekš minētās komandas izpildes mēs saņemsim zemāk redzamo izvadi, kas tiek parādīta 2 stundas 30 minūtes pirms pagājušā gada :

PostgreSQL intervāls

Mēs esam redzējuši primāro intervālu datu tipa piemēru un izprotam tā darbību. Tagad mēs redzēsim ievades un izvades formātu intervāla vērtības.

Pirmkārt, mēs sapratīsim PostgreSQL intervāla vērtība ievades formātam :

PostgreSQL intervāla ievades formāts

Programmā PostgreSQL mums ir šāda informācija daudznozīmīga sintakse, kas palīdz mums uzrakstīt intervālu vērtības:

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

Mums ir šādi parametri, kas tiek izmantoti iepriekš minētajā sintaksē:

Parametrs Apraksts
daudzums A daudzums ir skaitlis, kas pieņem arī tādas zīmes kā + vai -
vienība The vienība var būt jebkura tūkstošgade, gadsimts, desmitgade, gads, mēnesis, nedēļa, diena, stunda, minūte, sekunde, milisekunde, mikrosekunde, vai saīsinājums var būt šāds y, m, d utt. un daudzskaitļa formas var būt mēneši, dienas utt.
virziens The virziens parametrs var būt pirms vai tukša virkne.

Piezīme. Iepriekš minētā sintakse tiek izmantota arī intervāla izvades formātam un pazīstama kā postgres_verbose.

Tālāk esošajā piemērā mēs parādīsim dažas intervāla vērtības, kur mēs izmantojam izteiksmīga sintakse :

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

ISO 8601 intervāla formāts

Papildus iepriekš norādītajai detalizētajai sintaksei, lai rakstītu intervālu vērtības, izmantojot ISO 8601 laiks intervālos, PostgreSQL mums nodrošina divus veidus, kas ir šādi:

    Apzīmētāju formāts Alternatīvs formāts

ISO 8601 apzīmējumu formāts ir šāds:

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

Iepriekš minētajā formātā intervāla vērtība būtiska sākas ar burts P , un burts T tiek izmantots, lai definētu diennakts laika vienība .

Zemāk esošajā tabulā ir parādīts ISO 8601 intervāls vienību saīsinājumi:

Abreviatūra Apraksts
UN Gadiem
M Mēneši (datuma daļai)
IN Nedēļas
D Dienas
H Stundas
M Minūtes (laika daļai)
S Sekundes

Piezīme: M var būt mēneši vai minūtes atkarībā no tā, vai tas izskatās pirms vai pēc burta T.

Apskatīsim piemēru ISO 8601 apzīmējumi formāts mūsu labākai izpratnei:

The ISO 8601 apzīmējumu formāts var rakstīt intervālam no 5 gadi 4 mēneši 3 dienas 2 stundas 1 minūtes 1 sekunde :

 P5Y4M3DT2H1M1S 

Un alternatīvā forma ISO 8601 ir kā parādīts zemāk:

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

Un tas arī sākas ar burts P un burts T, kas sadala laiks un datums intervāla vērtības daļas.

Piemēram, ISO 8601 alternatīvā veidlapa var rakstīt priekš 5 gadi 4 mēneši 3 dienas 2 stundas 1 minūte 1 sekunde, kā parādīts zemāk:

 P0005-04-03T02:01:01 

PostgreSQL intervāla izvades formāts

Intervālu vērtību PostgreSQL intervāla izvades formātu var iestatīt, izmantojot IESTATĪT intervālstils komandu, kā mēs redzam zemāk esošajā piemērā:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL satur četrus dažādus izvades formātus, piemēram:

    iso_8601 postgres_verbose Postgres sql standarts

Piezīme. Lai formatētu intervālu vērtības, PostgreSQL pēc noklusējuma izmanto Postgres stilu.

Apskatīsim mūsu labākas izpratnes piemēru:

Tālāk norādītā komanda tiek izmantota, lai parādītu 5 gadi 4 mēneši 3 dienas 2 stundas 1 minūte 1 sekunde četros dažādos izvades formātos:

Izvades formātam ISO_8601

Zemāk esošajā komandā mēs to darīsim IESTATĪT uz intervālstilsiso_8601 iepriekš minētajai intervāla vērtībai:

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

Izvade

Pēc iepriekš minētās komandas izpildes mēs iegūsim zemāk redzamo rezultātu, kas apzīmē iso_8601 intervāla izvades formāts:

PostgreSQL intervāls

Postgres_verbose izvades formātam

Zemāk esošajā komandā mēs to darīsim IESTATĪT uz intervālstilspostgres_verbose iepriekšminētajai intervāla vērtībai:

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

Izvade

Mēs iegūsim tālāk norādīto rezultātu pēc iepriekš minētās komandas ieviešanas, kas parāda postgres_verbose intervāla izvades formāts:

nemainīgs saraksts
PostgreSQL intervāls

Postgres izvades formātam

Zemāk esošajā komandā mēs to darīsim IESTATĪT uz intervālstilsPostgres iepriekš minētajai intervāla vērtībai:

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

Izvade

Mēs iegūsim tālāk norādīto rezultātu pēc veiksmīgas iepriekš minētās komandas izpildes, kas parāda Postgres intervāla izvades formāts:

PostgreSQL intervāls

Sql_standarta izvades formātam

Zemāk esošajā komandā mēs to darīsim IESTATĪT uz intervālstilssql_standarts iepriekš minētajai intervāla vērtībai:

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

Izvade

Mēs iegūsim tālāk norādīto rezultātu pēc veiksmīgas iepriekš minētās komandas, kas apzīmē sql_standarts intervāla izvades formāts:

PostgreSQL intervāls

PostgreSQL intervāla pārveidošana uz virkni

Mēs varam izmantot TO_CHAR() funkcija, lai pārveidotu virknes intervāla vērtību.

Sintakse PostgreSQL intervāla pārveidošanai uz virkni

 TO_CHAR(interval,format) 

The TO_CHAR() funkcija ņem pirmais paziņojumsintervāla vērtība un vēl viens kā formātā un izgūst virkni, parādot intervālu konkrētajā formātā.

Tālāk esošajā piemērā mēs izmantosim funkciju TO_CHAR(), kas pārvērš PostgreSQL intervālu virknes vērtībā:

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

Izvade

Pēc veiksmīgas iepriekš minētās komandas izpildes mēs saņemsim šādu rezultātu:

PostgreSQL intervāls

Ar PostgreSQL intervālu saistītie operatori un funkcijas

Intervālu operatori

Mēs varam izmantot sekojošo +, -, * utt aritmētiskais operators lai iegūtu intervālu vērtības.

Apskatīsim tālāk redzamo piemēru, lai mēs labāk izprastu:

Nākamajā komandā mēs izmantosim aritmētiskais operators (+) ar PostgreSQL intervāla datu tipa palīdzību:

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

Izvade

Mēs iegūsim tālāk norādīto rezultātu, ieviešot iepriekš minēto komandu, kā parādīts zemāk:

PostgreSQL intervāls

Nākamajā komandā mēs izmantosim aritmētiskais operators (-) ar PostgreSQL intervāla datu tipa palīdzību:

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

Izvade

Ieviešot iepriekš minēto komandu, mēs iegūsim šādu rezultātu:

PostgreSQL intervāls

Nākamajā komandā mēs izmantosim aritmētiskais operators (*) ar PostgreSQL intervāla datu tipa palīdzību:

 SELECT 400 * INTERVAL '5 minute'; 

Izvade

Ieviešot iepriekš minēto komandu, mēs iegūsim šādu rezultātu:

PostgreSQL intervāls

Datu izvilkšana no PostgreSQL intervāla

Mēs varam izmantot EKSTRAKTS() funkcija, lai izvilktu laukus no intervāla vērtības, piemēram, gads, mēnesis, datums utt .

Sintakse datu izvilkšanai no PostgreSQL intervāla

 EXTRACT(field FROM interval) 

Iepriekš minētajā sintaksē mēs varam izmantot gads, mēnesis, datums, stunda, minūtes uc, lauka parametrā.

The ekstrakts funkcija atgriež divkāršas precizitātes tipa vērtību, ja mēs vēlamies iegūt no intervāla.

Nākamajā piemērā mēs izmantosim EKSTRAKTS() funkcija, lai izgūtu dubultās precizitātes vērtību.

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

Izvade

Pēc veiksmīgas iepriekš minētās komandas izpildes mēs iegūsim zemāk esošo izvadi, kas parāda datuma daļa dubultai precizitātei vērtības, kā parādīts zemāk:

PostgreSQL intervāls

PostgreSQL intervāla vērtību pielāgošana

Mums ir divas funkcijas, attaisnot_dienas un attaisnot_stundas PostgreSQL, kas ļauj mums modificēt 24 stundu intervāls uzskatīt par viena diena un intervāls no 30 dienu uzskatīt par viens mēnesis .

Apskatīsim piemēru, lai saprastu, kā mēs pielāgojam PostgreSQL intervāla vērtības:

Nākamajā komandā mēs izmantosim Justify_days un justify_hours funkcija:

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

Izvade

Pēc iepriekš minētās komandas izpildes mēs iegūsim šādu rezultātu, kas parāda intervālu 30 dienas kā viens mēnesis un 24 stundu intervāls kā viena diena :

PostgreSQL intervāls

Bez tam, attaisnot_intervālu funkcija regulē intervālu vērtības ar palīdzību attaisnot_dienas un attaisnot_stundas ar pievienotām zīmju modifikācijām:

Nākamajā piemērā mēs izmantosim funkciju justfiy_interval ar komandu SELECT:

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

Izvade

Pēc iepriekš minētās komandas ieviešanas mēs saņemsim šādu izvadi:

kontroles struktūras python
PostgreSQL intervāls

Pārskats

Iekš PostgreSQL intervāla datu tips sadaļā, mēs esam apguvuši šādas tēmas:

  • The PostgreSQL intervāla dati tips tiek izmantots, lai saglabātu un izvietotu periodu gadi, mēneši, dienas, stundas, minūtes, sekundes.
  • Mēs izmantojām dažādus Intervālu funkcijas , piemēram, TAGAD(), TO_CHAR(), lai uzlabotu intervālu vērtības no konkrētās tabulas.
  • PostgreSQL intervāla vērtībām ir abas ievade un izvade intervāla formāts.
  • Mēs varam pielāgot PostgreSQL intervāla vērtības ar palīdzību justify_days(), justify_hours, justify_interval() funkcijas.
  • Mēs varam izmantot EKSTRAKTS() funkcija, lai iegūtu intervāla lauka vērtības.