Šiame skyriuje mes suprasime, kaip veikia PostgreSQL intervalo duomenų tipas, ir mes taip pat matome pavyzdžių 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 :
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:
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:
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:
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
„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:
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“ 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ą:
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:
Š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ą:
Š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ą:
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 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 :
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į:
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.