I denne delen skal vi forstå virkemåten til PostgreSQL Interval datatype, og vi ser også eksempler av Intervalldatatype. Og mest brukt Interval funksjoner , for eksempel, NÅ(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). De Inngang og utgang format for PostgreSQL-intervallverdier.
Hva er PostgreSQL Interval Data Type?
I PostgreSQL er Intervall er en annen type datatype som brukes til å lagre og distribuere tid i år, måneder, dager, timer, minutter, sekunder, osv. Og måneder og dager verdier er heltallsverdier , mens andres felt kan være brøkverdier.
PostgreSQL intervall datatype verdi involverer 16 byte lagring størrelse, som bidrar til å lagre en periode med det akseptable området fra - 178000000 år til 178000000 år.
hvordan utføre et skript
Merk: Antall brøksiffer tatt i det andre feltet er kjent som presisjonen p.
Syntaks for PostgreSQL Interval datatype
Syntaksen til PostgreSQL-intervalldatatypen er som følger:
@ interval [ fields ] [ (p) ]
I syntaksen ovenfor har vi følgende parametere:
Parameter | Beskrivelse |
---|---|
Enger | Feltparameteren brukes til å vise tiden. |
s | P brukes til å vise presisjonsverdi. |
@ | Vi kan ignorere @-parameteren da det er en valgfri parameter. |
La oss se et eksempel for å bedre forstå hvordan vi kan skrive intervallverdiene med @ parameter og uten @ parameter :
@interval '6 months before'; @interval '2 hours 30 minutes';
ELLER
interval '6 months before'; interval '2 hours 30 minutes';
Merk: Vi kan bruke begge utsagnene ovenfor ettersom de samsvarer med hverandre. Videre kan en intervallverdi ha en valgfri presisjonsverdi p med det tillatte området startes fra 0 til 6.
Eksempel på PostgreSQL Interval datatype
La oss se ett eksempel for å forstå hvordan PostgreSQL Interval datatype virker.
I eksemplet nedenfor vil vi prøve å finne tidspunktet for 2 timer 30 minutter før, på nåværende tid i fjor ; vi vil bruke følgende kommandoer:
SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year';
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få utgangen nedenfor, som vises 2 timer 30 minutter før fjoråret :
Vi har sett det primære eksemplet på intervalldatatype og forstår hvordan den fungerer. Nå vil vi se inngangs- og utdataformatet til intervallverdier.
For det første vil vi forstå PostgreSQL-intervallverdi for inndataformatet :
PostgreSQL Interval Input Format
I PostgreSQL har vi følgende utførlig syntaks, som hjelper oss å skrive intervallverdiene:
quantity unit [quantity unit...] [direction]
Vi har parametrene nedenfor, som brukes i syntaksen ovenfor:
Parameter | Beskrivelse |
---|---|
mengde | EN mengde er et tall, som også godtar tegn som + eller - |
enhet | De enhet kan være hvilken som helst årtusen, århundre, tiår, år, måned, uke, dag, time, minutt, sekund, millisekund, mikrosekund, eller forkortelse kan være følgende y, m, d osv. og flertallsformene kan være måneder, dager , etc. |
retning | De retning parameter kan være siden eller den tomme strengen. |
Merk: Syntaksen ovenfor brukes også for intervallutdataformatet og kjent som postgres_verbose.
I eksemplet nedenfor vil vi vise noen intervallverdier der vi bruker utførlig syntaks :
INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago';
ISO 8601-intervallformatet
Foruten den verbose syntaksen ovenfor, å skrive intervallverdiene ved hjelp av ISO 8601-tid intervaller, gir PostgreSQL oss de to måtene, som er som følger:
Designatorformatet for ISO 8601 er som følger:
P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]
I formatet ovenfor begynner den essensielle intervallverdien med bokstaven P , og bokstaven T brukes til å definere tidsenhet .
Tabellen nedenfor viser ISO 8601 intervall enhetsforkortelser:
Forkortelse | Beskrivelse |
---|---|
OG | år |
M | Måneder (for datodelen) |
I | Uker |
D | Dager |
H | Timer |
M | Minutter (for tidsdelen) |
S | Sekunder |
Merk: M kan være måneder eller minutter basert på om den ser ut før eller etter bokstaven T.
La oss se et eksempel på ISO 8601-betegnelser format for bedre forståelse:
De ISO 8601 designatorformat kan skrives for intervallet på 5 år 4 måneder 3 dager 2 timer 1 minutter 1 sekund :
P5Y4M3DT2H1M1S
Og den alternative formen for ISO 8601 er som vist nedenfor:
P [ years-months-days ] [ T hours:minutes:seconds ]
Og det begynner også med bokstaven P og bokstaven T, som deler opp tid og dato deler av intervallverdien.
For eksempel ISO 8601 alternativ form kan skrives for 5 år 4 måneder 3 dager 2 timer 1 minutt 1 sekund, som vist under:
P0005-04-03T02:01:01
PostgreSQL-intervallutdataformat
PostgreSQL-intervallutdataformatet for intervallverdier kan stilles inn ved hjelp av SETT intervallstil kommando, som vi kan se i eksemplet nedenfor:
SET intervalstyle = 'iso_8601';
PostgreSQL inneholder fire forskjellige utdataformater, for eksempel:
Merk: For å formatere intervallverdiene bruker PostgreSQL Postgres-stilen som standard.
La oss se et eksempel på vår bedre forståelse:
Kommandoen nedenfor brukes til å vise 5 år 4 måneder 3 dager 2 timer 1 minutt 1 sekund i de fire forskjellige utdataformatene:
For ISO_8601 utdataformat
I kommandoen nedenfor vil vi SETT de intervallstil som iso_8601 for den ovennevnte intervallverdien:
SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second';
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få resultatet nedenfor, som representerer iso_8601 intervallutdataformat:
For postgres_verbose utdataformat
I kommandoen nedenfor vil vi SETT de intervallstil som postgres_verbose for den ovennevnte intervallverdien:
SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Produksjon
Vi vil få resultatet nedenfor etter å ha implementert kommandoen ovenfor, som viser postgres_verbose intervallutdataformat:
de tidlige mukere
For Postgres utdataformat
I kommandoen nedenfor vil vi SETT de intervallstil som Postgres for den ovennevnte intervallverdien:
SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Produksjon
Vi vil få resultatet nedenfor etter vellykket utførelse av kommandoen ovenfor, som viser Postgres intervallutdataformat:
For SQL_standard utdataformat
I kommandoen nedenfor vil vi SETT de intervallstil som sql_standard for den ovennevnte intervallverdien:
SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
Produksjon
Vi vil få resultatet nedenfor etter vellykket utførelse av kommandoen ovenfor, som representerer sql_standard intervallutdataformat:
Endre PostgreSQL-intervallet til streng
Vi kan bruke TO_CHAR() funksjon for å endre en intervallverdi til en streng.
Syntaksen for å endre PostgreSQL-intervallet til streng
TO_CHAR(interval,format)
De TO_CHAR() funksjon tar første uttalelse som en intervallverdi og en annen som format og henter en streng som viser intervallet i det bestemte formatet.
I eksemplet nedenfor vil vi bruke TO_CHAR()-funksjonen, som konverterer PostgreSQL-intervallet til strengverdien:
SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' );
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få resultatet nedenfor:
PostgreSQL-intervallrelaterte operatører og funksjoner
Intervalloperatører
Vi kan bruke følgende +, -, *, etc. aritmetisk operator for å få intervallverdiene.
La oss se eksemplet nedenfor for bedre forståelse:
I den følgende kommandoen vil vi bruke aritmetisk operator (+) ved hjelp av PostgreSQL intervalldatatype:
SELECT INTERVAL '1h 50m' + INTERVAL '5m';
Produksjon
Vi vil få resultatet nedenfor ved implementering av kommandoen ovenfor, som vist nedenfor:
I den følgende kommandoen vil vi bruke aritmetisk operator (-) ved hjelp av PostgreSQL intervalldatatype:
SELECT INTERVAL '3h 50m' - INTERVAL '30m';
Produksjon
Når vi implementerer kommandoen ovenfor, får vi følgende resultat:
arv java
I den følgende kommandoen vil vi bruke aritmetisk operator (*) ved hjelp av PostgreSQL intervalldatatype:
SELECT 400 * INTERVAL '5 minute';
Produksjon
Når vi implementerer kommandoen ovenfor, får vi følgende resultat:
Trekker ut data fra et PostgreSQL-intervall
Vi kan bruke EKSTRAKT() funksjon for å trekke ut feltene fra en intervallverdi, for eksempel, år, måned, dato osv .
Syntaksen for å trekke ut data fra et PostgreSQL-intervall
EXTRACT(field FROM interval)
I syntaksen ovenfor kan vi bruke år, måned, dato, time, minutter , etc., i feltparameteren.
De ekstrakt funksjonen returnerer en verdi av typen dobbel presisjon hvis vi ønsker å trekke ut fra intervallet.
I det følgende eksempelet vil vi bruke EKSTRAKT() funksjon for å hente den doble presisjonsverdien.
SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' );
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få utgangen nedenfor, som viser datodel for dobbelpresisjonen verdier som vist nedenfor:
Justering av PostgreSQL-intervallverdier
Vi har to funksjoner, rettferdig_dager og rettferdig_timer i PostgreSQL, som tillater oss å endre intervall på 24 timer vurdere som en dag og intervallet på 30 dager vurdere som en måned .
La oss se et eksempel for å forstå hvordan vi justerer PostgreSQL-intervallverdiene:
I den følgende kommandoen vil vi bruke funksjonen justify_days og justify_hours:
SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours');
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få følgende resultat, som viser intervallet til 30 dager som en måned og intervall på 24 timer som en dag :
I tillegg til det begrunn_intervall funksjon regulerer intervallverdiene ved hjelp av rettferdig_dager og rettferdig_timer med ekstra tegnmodifikasjoner:
I følgende eksempel vil vi bruke justifiy_interval-funksjonen med SELECT-kommandoen:
SELECT justify_interval(interval '6 months -1 hour');
Produksjon
Vi vil få følgende utgang etter å ha implementert kommandoen ovenfor:
Oversikt
I PostgreSQL Interval datatype seksjonen, har vi lært følgende emner:
- De PostgreSQL-intervalldata type brukes til å lagre og distribuere en periode i år, måneder, dager, timer, minutter, sekunder.
- Vi brukte forskjellige Intervallfunksjoner , for eksempel, NÅ(), TO_CHAR(), for å forbedre intervallverdier fra den aktuelle tabellen.
- PostgreSQL-intervallverdiene har begge deler input og output intervallformat.
- Vi kan justere PostgreSQL-intervallverdiene ved hjelp av justify_days(), justify_hours, justify_interval() funksjoner.
- Vi kan bruke EKSTRAKT() funksjon for å trekke ut intervallfeltverdiene.