logo

PostgreSQL-väli

Tässä osiossa aiomme ymmärtää järjestelmän toimintaa PostgreSQL-välin tietotyyppi, ja näemme myös esimerkkejä -lta Intervallitietotyyppi. Ja enimmäkseen käytetty Interval toimintoja , esimerkiksi, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). The Tulo ja lähtö muoto PostgreSQL-väliarvoille.

Mikä on PostgreSQL Interval Data Type?

PostgreSQL:ssä Intervalli on toinen tietotyyppi, jota käytetään ajan tallentamiseen ja käyttöönottoon vuodet, kuukaudet, päivät, tunnit, minuutit, sekunnit, jne. Ja kuukausia ja päiviä arvot ovat kokonaislukujen arvot , kun taas toisen kenttä voi olla murto-osien arvot.

PostgreSQL-välin tietotyypin arvo sisältää 16 tavua tallennustilaa koko, joka auttaa tallentamaan ajanjakson hyväksyttävällä alueella - 178000000 vuotta 178000000 vuotta.

katkaise ja poista ero

Huomautus: Toisessa kentässä otettujen murtolukujen lukumäärä tunnetaan tarkkuudella p.

PostgreSQL Interval -tietotyypin syntaksi

PostgreSQL Interval -tietotyypin syntaksi on seuraava:

 @ interval [ fields ] [ (p) ] 

Yllä olevassa syntaksissa meillä on seuraavat parametrit:

Parametri Kuvaus
kentät Kenttäparametria käytetään näyttämään aika.
s P:tä käytetään tarkkuusarvon näyttämiseen.
@ Voimme jättää huomiotta @-parametrin, koska se on valinnainen parametri.

Katsotaanpa esimerkkiesimerkkiä, jotta ymmärrämme paremmin, kuinka voimme kirjoittaa intervalliarvot kanssa @-parametri ja ilman @-parametria :

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

TAI

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

Huomautus: Voimme käyttää molempia yllä olevia lauseita, koska ne vastaavat toisiaan. Lisäksi intervalliarvolla voi olla valinnainen tarkkuusarvo p, jonka sallittu alue on aloitettu 0 - 6.

Esimerkki PostgreSQL Interval -tietotyypistä

Katsotaanpa yksi esimerkkiesimerkki ymmärtääksemme, miten PostgreSQL-välin tietotyyppi toimii.

Alla olevassa esimerkissä yritämme löytää ajan 2 tuntia 30 minuuttia ennen, osoitteessa nykyinen aika viime vuodesta ; käytämme seuraavia komentoja:

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

Lähtö

Yllä olevan komennon suorittamisen jälkeen saamme alla olevan tulosteen, joka näkyy 2 tuntia 30 minuuttia ennen viime vuotta :

PostgreSQL-väli

Olemme nähneet ensisijaisen esimerkin intervallitietotyypistä ja ymmärrämme sen toiminnan. Nyt näemme syöttö- ja tulostusmuodon intervalliarvot.

Ensinnäkin ymmärrämme PostgreSQL-välin arvo syöttömuodolle :

PostgreSQL-välin syöttömuoto

PostgreSQL:ssä meillä on seuraava monisanainen syntaksi, joka auttaa meitä kirjoittamaan intervalliarvot:

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

Meillä on seuraavat parametrit, joita käytetään yllä olevassa syntaksissa:

Parametri Kuvaus
määrä A määrä on numero, joka hyväksyy myös merkkejä, kuten + tai -
yksikkö The yksikkö voi olla mikä tahansa vuosituhat, vuosisata, vuosikymmen, vuosi, kuukausi, viikko, päivä, tunti, minuutti, sekunti, millisekunti, mikrosekunti, tai lyhenne voi olla seuraava y, m, d jne. ja monikkomuodot voivat olla kuukausia, päiviä , jne.
suunta The suunta parametri voi olla sitten tai tyhjä merkkijono.

Huomautus: Yllä olevaa syntaksia käytetään myös välitulostusmuodossa ja tunnetaan nimellä postgres_verbose.

Alla olevassa esimerkissä näytämme joitain intervalliarvoja, joissa käytämme monisanainen syntaksi :

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

ISO 8601 -intervallimuoto

Yllä olevan monisanaisen syntaksin lisäksi intervalliarvojen kirjoittamiseen avulla ISO 8601-aika välein, PostgreSQL tarjoaa meille kaksi tapaa, jotka ovat seuraavat:

    Merkintämuoto Vaihtoehtoinen muoto

ISO 8601 -tunnisteiden muoto on seuraava:

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

Yllä olevassa muodossa intervalliarvo olennainen alkaa kirjaimella kirjain p , ja kirjain t käytetään määrittelemään kellonajan yksikkö .

Alla oleva taulukko näyttää ISO 8601 -väli yksiköiden lyhenteet:

Lyhenne Kuvaus
JA Vuosia
M Kuukaudet (päivämäärän osalta)
SISÄÄN Viikot
D päivää
H Tuntia
M Minuutit (aikaosaan)
S Sekuntia

Huomautus: M voi olla kuukausia tai minuutteja sen mukaan, näyttääkö se ennen tai jälkeen kirjaimen T.

Katsotaanpa esimerkkiä ISO 8601 -tunnukset muoto, jotta ymmärrämme paremmin:

The ISO 8601 -nimikkeiden muoto voidaan kirjoittaa välille 5 vuotta 4 kuukautta 3 päivää 2 tuntia 1 minuuttia 1 sekunti :

 P5Y4M3DT2H1M1S 

Ja vaihtoehtoinen muoto ISO 8601 on alla olevan kuvan mukainen:

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

Ja se myös alkaa kirjain P ja kirjain T, joka jakaa aika ja päivämäärä osia intervalliarvosta.

Esimerkiksi, ISO 8601 vaihtoehtoinen muoto varten voidaan kirjoittaa 5 vuotta 4 kuukautta 3 päivää 2 tuntia 1 minuutti 1 sekunti, kuten alla:

 P0005-04-03T02:01:01 

PostgreSQL-välin tulostusmuoto

Intervalliarvojen PostgreSQL-välin tulostusmuoto voidaan asettaa ASETA intervalltyyli komento, kuten näemme alla olevassa esimerkissä:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL sisältää neljä erilaista tulostusmuotoa, kuten:

    iso_8601 postgres_verbose Postgres sql standardi

Huomautus: PostgreSQL käyttää oletusarvoisesti väliarvojen muotoilemiseen Postgres-tyyliä.

Katsotaanpa esimerkki paremmasta ymmärryksestämme:

Alla olevaa komentoa käytetään näyttämään 5 vuotta 4 kuukautta 3 päivää 2 tuntia 1 minuutti 1 sekunti neljässä eri tulostusmuodossa:

ISO_8601-tulostusmuodolle

Alla olevassa komennossa teemme ASETA the intervalltyyli kuten iso_8601 edellä mainitulle intervalliarvolle:

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

Lähtö

Yllä olevan komennon suorittamisen jälkeen saamme alla olevan tuloksen, joka edustaa iso_8601 intervallitulostusmuoto:

PostgreSQL-väli

Postgres_verbose-tulostusmuodolle

Alla olevassa komennossa teemme ASETA the intervalltyyli kuten postgres_verbose edellä mainitulle intervalliarvolle:

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

Lähtö

Saamme alla olevan tuloksen suoritettuamme yllä olevan komennon, joka näyttää postgres_verbose intervallitulostusmuoto:

vastaavuuslakeja
PostgreSQL-väli

Postgres-tulostusmuodolle

Alla olevassa komennossa teemme ASETA the intervalltyyli kuten Postgres edellä mainitulle intervalliarvolle:

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

Lähtö

Saamme alla olevan tuloksen suoritettuamme onnistuneesti yllä olevan komennon, joka näyttää Postgres intervallitulostusmuoto:

PostgreSQL-väli

Sql_standard-tulostusmuodolle

Alla olevassa komennossa teemme ASETA the intervalltyyli kuten sql_standardi edellä mainitulle intervalliarvolle:

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

Lähtö

Saamme alla olevan tuloksen suoritettuamme onnistuneesti yllä olevan komennon, joka edustaa sql_standardi intervallitulostusmuoto:

PostgreSQL-väli

PostgreSQL-välin muuttaminen merkkijonoksi

Voimme käyttää TO_CHAR() funktio muuttaa intervalliarvon merkkijonoksi.

Syntaksi PostgreSQL-välin muuttamiseen merkkijonoksi

 TO_CHAR(interval,format) 

The TO_CHAR()-funktio ottaa ensimmäinen lausunto kuten intervalliarvo ja toinen kuten muoto ja hakee merkkijonon, joka näyttää intervallin tietyssä muodossa.

Alla olevassa esimerkissä käytämme TO_CHAR()-funktiota, joka muuntaa PostgreSQL-välin merkkijonoarvoksi:

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

Lähtö

Kun yllä oleva komento on suoritettu onnistuneesti, saamme seuraavan tuloksen:

PostgreSQL-väli

PostgreSQL-väliin liittyvät operaattorit ja toiminnot

Intervallioperaattorit

Voimme käyttää seuraavaa +, -, * jne. aritmeettinen operaattori saadaksesi intervalliarvot.

Katsotaanpa alla olevaa esimerkkiä ymmärtääksemme paremmin:

Seuraavassa komennossa käytämme aritmeettinen operaattori (+) PostgreSQL-välitietotyypin avulla:

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

Lähtö

Saamme alla olevan tuloksen yllä olevan komennon toteuttamisesta, kuten alla on esitetty:

PostgreSQL-väli

Seuraavassa komennossa käytämme aritmeettinen operaattori (-) PostgreSQL-välitietotyypin avulla:

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

Lähtö

Suorittaessamme yllä olevan komennon, saamme seuraavan tuloksen:

PostgreSQL-väli

Seuraavassa komennossa käytämme aritmeettinen operaattori (*) PostgreSQL-välitietotyypin avulla:

 SELECT 400 * INTERVAL '5 minute'; 

Lähtö

Suorittaessamme yllä olevan komennon, saamme seuraavan tuloksen:

PostgreSQL-väli

Tietojen purkaminen PostgreSQL-väliltä

Voimme käyttää OTTAA TALTEEN() funktio poimimaan kentät intervalliarvosta, esim. vuosi, kuukausi, päivämäärä jne .

Syntaksi tietojen purkamiseksi PostgreSQL-välistä

 EXTRACT(field FROM interval) 

Yllä olevassa syntaksissa voimme käyttää vuosi, kuukausi, päivämäärä, tunti, minuutit jne. kenttäparametrissa.

The ottaa talteen funktio palauttaa tyypin kaksinkertaisen tarkkuuden arvon, jos haluamme poimia intervallista.

Seuraavassa esimerkissä käytämme OTTAA TALTEEN() toiminto noutaa kaksinkertaisen tarkkuuden arvon.

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

Lähtö

Kun yllä oleva komento on suoritettu onnistuneesti, saamme alla olevan lähdön, joka näyttää päivämäärä osa kaksoistarkkuutta varten arvot alla olevan kuvan mukaisesti:

PostgreSQL-väli

PostgreSQL-välin arvojen säätäminen

Meillä on kaksi toimintoa, perustella_päivät ja perustella_tunnit PostgreSQL:ssä, jonka avulla voimme muokata 24 tunnin välein pitää yksi päivä ja väli 30 päivää pitää yksi kuukausi .

Katsotaanpa esimerkkiä ymmärtääksemme, kuinka säädämme PostgreSQL-välin arvoja:

Seuraavassa komennossa käytämme justify_days ja justify_hours -funktio:

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

Lähtö

java lajittelee luetteloa

Yllä olevan komennon suorittamisen jälkeen saamme seuraavan tuloksen, joka näyttää välin 30 päivää kuin yksi kuukausi ja 24 tunnin välein yhtenä päivänä :

PostgreSQL-väli

Sen lisäksi, justify_interval toiminto säätelee intervalliarvoja avulla perustella_päivät ja perustella_tunnit lisätyillä merkkimuutoksilla:

Seuraavassa esimerkissä käytämme justfiy_interval-funktiota SELECT-komennon kanssa:

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

Lähtö

Saamme seuraavan lähdön yllä olevan komennon toteuttamisen jälkeen:

PostgreSQL-väli

Yleiskatsaus

Vuonna PostgreSQL-välin tietotyyppi -osiossa olemme oppineet seuraavat aiheet:

  • The PostgreSQL-välin tiedot tyyppiä käytetään ajanjakson tallentamiseen ja käyttöönottoon vuotta, kuukautta, päivää, tuntia, minuuttia, sekuntia.
  • Käytimme erilaisia Intervallitoiminnot , esimerkiksi, NYT(), TO_CHAR(), parantaaksesi tietyn taulukon intervalliarvoja.
  • PostgreSQL-väliarvoilla on molemmat tulo ja lähtö intervallimuoto.
  • Voimme säätää PostgreSQL-välin arvoja avulla justify_days(), justify_hours, justify_interval()-funktiot.
  • Voimme käyttää OTTAA TALTEEN() funktio poimimaan intervallikentän arvot.