logo

PostgreSQL intervalas

Šiame skyriuje mes suprasime, kaip veikia PostgreSQL intervalo duomenų tipas, ir mes taip pat matome pavyzdžiųIntervalinis duomenų tipas. Ir dažniausiai naudojamas intervalas funkcijas , pavyzdžiui, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). The Įvestis ir išvestis Formatas PostgreSQL intervalo reikšmėms.

Kas yra PostgreSQL intervalo duomenų tipas?

Programoje PostgreSQL, Intervalas yra kitas duomenų tipas, naudojamas laikui saugoti ir diegti metai, mėnesiai, dienos, valandos, minutės, sekundės, ir tt Ir mėnesius ir dienas vertybės yra sveikųjų skaičių reikšmės , tuo tarpu antrojo laukas gali būti trupmenų reikšmės.

PostgreSQL intervalo duomenų tipo reikšmė apima 16 baitų saugykla dydis, kuris padeda išsaugoti laikotarpį su priimtinu diapazonu nuo - 178000000 metų iki 178000000 metų.

if-else java

Pastaba: Antrajame lauke paimtų trupmenos skaitmenų skaičius vadinamas tikslumu p.

PostgreSQL intervalo duomenų tipo sintaksė

PostgreSQL intervalo duomenų tipo sintaksė yra tokia:

 @ interval [ fields ] [ (p) ] 

Aukščiau pateiktoje sintaksėje turime šiuos parametrus:

Parametras apibūdinimas
laukai Lauko parametras naudojamas laikui parodyti.
p P naudojamas tikslumo vertei rodyti.
@ Mes galime nepaisyti @ parametro, nes jis yra neprivalomas parametras.

Pažiūrėkime pavyzdį, kad geriau suprastume, kaip rašyti intervalo reikšmes su @ parametras ir be @ parametro :

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

ARBA

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

Pastaba: galime naudoti abu aukščiau pateiktus teiginius, nes jie atitinka vienas kitą. Be to, intervalo reikšmė gali turėti pasirenkamą tikslumo reikšmę p, kai leistinas diapazonas prasideda nuo 0 iki 6.

PostgreSQL intervalo duomenų tipo pavyzdys

Pažiūrėkime vieną pavyzdį, kad suprastume, kaip PostgreSQL intervalo duomenų tipas darbai.

Žemiau pateiktame pavyzdyje bandysime rasti laiką prieš 2 valandas 30 minučių, prie dabartinis praėjusių metų laikas ; mes naudosime šias komandas:

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

Išvestis

Įvykdę aukščiau pateiktą komandą, gausime žemiau pateiktą išvestį, kuri bus rodoma 2 valandos 30 minučių prieš praėjusius metus :

PostgreSQL intervalas

Mes matėme pagrindinį intervalo duomenų tipo pavyzdį ir suprantame jo veikimą. Dabar pamatysime įvesties ir išvesties formatus intervalo reikšmės.

Pirma, mes suprasime PostgreSQL intervalo reikšmė įvesties formatui :

PostgreSQL intervalo įvesties formatas

„PostgreSQL“ turime šiuos dalykus žodinė sintaksė, kuri padeda mums parašyti intervalo reikšmes:

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

Mes turime šiuos parametrus, kurie naudojami aukščiau pateiktoje sintaksėje:

Parametras apibūdinimas
kiekis A kiekis yra skaičius, kuris taip pat priima tokius ženklus kaip + arba -
vienetas The vienetas gali būti bet koks tūkstantmetis, šimtmetis, dešimtmetis, metai, mėnuo, savaitė, diena, valanda, minutė, sekundė, milisekundė, mikrosekundė, arba santrumpa gali būti tokia y, m, d ir kt. o daugiskaitos formos gali būti mėnesius, dienas ir kt.
kryptis The kryptis parametras gali būti prieš arba tuščią eilutę.

Pastaba: aukščiau pateikta sintaksė taip pat naudojama intervalo išvesties formatui ir žinoma kaip postgres_verbose.

Toliau pateiktame pavyzdyje parodysime kai kurias intervalo reikšmes, kuriose naudosime žodinė sintaksė :

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

ISO 8601 intervalo formatas

Be aukščiau pateiktos išsamios sintaksės, intervalų reikšmes galite parašyti naudodami ISO 8601 laikas intervalais, PostgreSQL mums pateikia du būdus, kurie yra tokie:

    žymenų formatas Alternatyvus formatas

ISO 8601 žymenų formatas yra toks:

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

Aukščiau pateiktame formate esminė intervalo reikšmė prasideda raide raidė P , ir raidė T yra naudojamas apibrėžti paros laiko vienetas .

Žemiau esančioje lentelėje parodyta ISO 8601 intervalas vienetų santrumpos:

Santrumpa apibūdinimas
IR Metai
M Mėnesiai (datos daliai)
IN Savaitės
D Dienos
H Valandos
M Minutės (laiko daliai)
S sekundės

Pastaba: M gali būti mėnesiai arba minutės, atsižvelgiant į tai, ar jis atrodo prieš raidę T, ar po jos.

Pažiūrėkime pavyzdį ISO 8601 žymenys formatą, kad galėtume geriau suprasti:

The ISO 8601 žymenų formatas galima parašyti intervalui 5 metai 4 mėnesiai 3 dienos 2 valandos 1 minutė 1 sekundė :

 P5Y4M3DT2H1M1S 

Ir alternatyvi forma ISO 8601 yra kaip parodyta žemiau:

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

Ir tai taip pat prasideda nuo raidė P ir raidė T, kuris suskaido laikas ir data intervalo reikšmės dalys.

Pavyzdžiui, ISO 8601 alternatyvi forma gali būti parašytas 5 metai 4 mėnesiai 3 dienos 2 valandos 1 minutė 1 sekundė, kaip parodyta žemiau:

 P0005-04-03T02:01:01 

PostgreSQL intervalo išvesties formatas

Intervalų reikšmių PostgreSQL intervalo išvesties formatą galima nustatyti naudojant NUSTATYTI intervalų stilius komanda, kaip matome toliau pateiktame pavyzdyje:

 SET intervalstyle = 'iso_8601'; 

„PostgreSQL“ turi keturis skirtingus išvesties formatus, tokius kaip:

    iso_8601 postgres_verbose Postgres sql standartas

Pastaba: Norėdami formatuoti intervalų reikšmes, PostgreSQL pagal numatytuosius nustatymus naudoja Postgres stilių.

Pažiūrėkime geresnio supratimo pavyzdį:

Žemiau pateikta komanda naudojama rodyti 5 metai 4 mėnesiai 3 dienos 2 valandos 1 minutė 1 sekundė keturiais skirtingais išvesties formatais:

ISO_8601 išvesties formatui

Žemiau esančioje komandoje mes tai padarysime NUSTATYTI į intervalų stilius kaip iso_8601 aukščiau nurodytai intervalo vertei:

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

Išvestis

Įvykdę aukščiau pateiktą komandą, gausime žemiau pateiktą rezultatą, kuris reiškia iso_8601 intervalo išvesties formatas:

PostgreSQL intervalas

Postgres_verbose išvesties formatui

Žemiau esančioje komandoje mes tai padarysime NUSTATYTI į intervalų stilius kaip postgres_verbose aukščiau nurodytai intervalo vertei:

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

Išvestis

Mes gausime žemiau pateiktą rezultatą įgyvendinę aukščiau pateiktą komandą, kuri rodo postgres_verbose intervalo išvesties formatas:

java išeiti iš ciklo
PostgreSQL intervalas

„Postgres“ išvesties formatui

Žemiau esančioje komandoje mes tai padarysime NUSTATYTI į intervalų stilius kaip Postgres aukščiau minėtai intervalo reikšmei:

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

Išvestis

Toliau pateiktą rezultatą gausime sėkmingai įvykdę aukščiau pateiktą komandą, kuri rodo Postgres intervalo išvesties formatas:

PostgreSQL intervalas

Sql_standartiniam išvesties formatui

Žemiau esančioje komandoje mes tai padarysime NUSTATYTI į intervalų stilius kaip sql_standartas aukščiau minėtai intervalo reikšmei:

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

Išvestis

Toliau pateiktą rezultatą gausime sėkmingai įvykdę aukščiau pateiktą komandą, kuri reiškia sql_standartas intervalo išvesties formatas:

PostgreSQL intervalas

„PostgreSQL“ intervalo keitimas į eilutę

Mes galime naudoti TO_CHAR() funkcija pakeisti intervalo reikšmę į eilutę.

Sintaksė, skirta pakeisti PostgreSQL intervalą į eilutę

 TO_CHAR(interval,format) 

The TO_CHAR() funkcija paima pirmasis teiginys kaip intervalo reikšmę ir dar vienas kaip formatu ir nuskaito eilutę, rodydama intervalą tam tikru formatu.

Toliau pateiktame pavyzdyje naudosime funkciją TO_CHAR(), kuri konvertuoja PostgreSQL intervalą į eilutės reikšmę:

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

Išvestis

Sėkmingai įvykdę aukščiau pateiktą komandą, gausime tokį rezultatą:

PostgreSQL intervalas

Su PostgreSQL intervalu susiję operatoriai ir funkcijos

Intervaliniai operatoriai

Galime naudoti šiuos dalykus +, -, * ir tt aritmetinis operatorius gauti intervalo reikšmes.

Kad geriau suprastume, pažiūrėkime toliau pateiktą pavyzdį:

Šioje komandoje naudosime aritmetinis operatorius (+) naudojant PostgreSQL intervalo duomenų tipą:

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

Išvestis

Įdiegę aukščiau pateiktą komandą gausime žemiau pateiktą rezultatą, kaip parodyta žemiau:

PostgreSQL intervalas

Šioje komandoje naudosime aritmetinis operatorius (-) naudojant PostgreSQL intervalo duomenų tipą:

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

Išvestis

Įgyvendinę aukščiau pateiktą komandą, gausime tokį rezultatą:

PostgreSQL intervalas

Šioje komandoje naudosime aritmetinis operatorius (*) naudojant PostgreSQL intervalo duomenų tipą:

 SELECT 400 * INTERVAL '5 minute'; 

Išvestis

Įgyvendinę aukščiau pateiktą komandą, gausime tokį rezultatą:

PostgreSQL intervalas

Duomenų ištraukimas iš PostgreSQL intervalo

Mes galime naudoti IŠTRAUKTI () funkcija ištraukti laukus iš intervalo reikšmės, pavyzdžiui, metai, mėnuo, data ir kt .

Duomenų ištraukimo iš PostgreSQL intervalo sintaksė

 EXTRACT(field FROM interval) 

Aukščiau pateiktoje sintaksėje galime naudoti metai, mėnuo, data, valanda, minutės ir pan., lauko parametre.

java perdavė char į eilutę

The ekstraktas funkcija grąžina dvigubo tikslumo tipo reikšmę, jei norime išgauti iš intervalo.

Toliau pateiktame pavyzdyje naudosime IŠTRAUKTI () funkcija dvigubo tikslumo vertei gauti.

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

Išvestis

Sėkmingai įvykdę aukščiau pateiktą komandą, gausime žemiau pateiktą išvestį, kurioje bus rodoma datos dalis dvigubam tikslumui vertės, kaip parodyta žemiau:

PostgreSQL intervalas

PostgreSQL intervalo reikšmių koregavimas

Turime dvi funkcijas, pateisinti_dienos ir pateisinti_valandos PostgreSQL, kuri leidžia mums modifikuoti 24 valandų intervalas laikyti kaip vieną dieną ir intervalas 30 dienų laikyti kaip vienas mėnesis .

Pažiūrėkime pavyzdį, kad suprastume, kaip koreguojame PostgreSQL intervalo reikšmes:

Šioje komandoje naudosime Justify_days ir justify_hours funkcijos:

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

Išvestis

Įvykdę aukščiau pateiktą komandą, gausime tokį rezultatą, kuriame rodomas intervalas 30 dienų kaip vienas mėnuo ir 24 valandų intervalas kaip viena diena :

PostgreSQL intervalas

Be to, Justify_interval funkcija reguliuoja intervalų reikšmes su pagalba pateisinti_dienos ir pateisinti_valandos su papildomais ženklų pakeitimais:

Šiame pavyzdyje naudosime funkciją justifiy_interval su komanda SELECT:

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

Išvestis

Įdiegę aukščiau pateiktą komandą gausime šią išvestį:

PostgreSQL intervalas

Apžvalga

Viduje PostgreSQL intervalo duomenų tipas skyriuje išmokome šias temas:

  • The PostgreSQL intervalo duomenys tipas naudojamas laikotarpiui saugoti ir įdiegti metai, mėnesiai, dienos, valandos, minutės, sekundės.
  • Naudojome skirtingus Intervalinės funkcijos , pavyzdžiui, DABAR (), TO_CHAR (), kad padidintumėte intervalų reikšmes iš konkrečios lentelės.
  • PostgreSQL intervalo reikšmės turi abi įvestis ir išvestis intervalo formatas.
  • Mes galime koreguoti PostgreSQL intervalo reikšmes naudodami Justify_days(), justify_hours, justify_interval() funkcijos.
  • Mes galime naudoti IŠTRAUKTI () funkcija išgauti intervalo lauko reikšmes.