logo

PostgreSQL interval

I dette afsnit skal vi forstå, hvordan det fungerer PostgreSQL interval datatype, og vi ser også eksempler af Intervaldatatype. Og mest brugt Interval funktioner , for eksempel, NU(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). Det Input og output format for PostgreSQL-intervalværdier.

Hvad er PostgreSQL Interval Data Type?

I PostgreSQL er Interval er en anden type datatype, der bruges til at gemme og implementere tid i år, måneder, dage, timer, minutter, sekunder, osv. Og måneder og dage værdier er heltal værdier , hvorimod sekundets felt kan være brøkværdier.

PostgreSQL interval datatype værdi involverer 16 bytes lagerplads størrelse, som hjælper med at opbevare en periode med det acceptable interval fra - 178000000 år til 178000000 flere år.

hvilke måneder er der i 3. kvartal

Bemærk: Antallet af brøkcifre taget i det andet felt er kendt som præcisionen p.

Syntaks for PostgreSQL Interval datatype

Syntaksen for PostgreSQL Interval-datatypen er som følger:

 @ interval [ fields ] [ (p) ] 

I ovenstående syntaks har vi følgende parametre:

Parameter Beskrivelse
felter Feltparameteren bruges til at vise tiden.
s P bruges til at vise præcisionsværdi.
@ Vi kan ignorere @-parameteren, da det er en valgfri parameter.

Lad os se et eksempel for vores bedre forståelse af, hvordan vi kan skrive intervalværdierne med @ parameter og uden @ parameter :

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

ELLER

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

Bemærk: Vi kan bruge begge ovenstående udsagn, da de svarer til hinanden. Endvidere kan en intervalværdi have en valgfri præcisionsværdi p med det tilladte område fra 0 til 6.

Eksempel på PostgreSQL Interval datatype

Lad os se et eksempel for at forstå, hvordan PostgreSQL Interval datatype arbejder.

I nedenstående eksempel vil vi forsøge at finde tidspunktet for 2 timer 30 minutter før, ved nuværende tidspunkt sidste år ; vi vil bruge følgende kommandoer:

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

Produktion

Efter at have udført ovenstående kommando, får vi nedenstående output, som vises 2 timer 30 minutter før sidste år :

PostgreSQL interval

Vi har set det primære eksempel på intervaldatatype og forstår, hvordan den fungerer. Nu vil vi se input- og outputformatet for intervalværdier.

For det første vil vi forstå PostgreSQL-intervalværdi for inputformatet :

PostgreSQL Interval Input Format

I PostgreSQL har vi følgende udførlig syntaks, som hjælper os med at skrive intervalværdierne:

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

Vi har nedenstående parametre, som bruges i ovenstående syntaks:

Parameter Beskrivelse
antal EN antal er et tal, som også accepterer tegn som + eller -
enhed Det enhed kan være enhver årtusinde, århundrede, årti, år, måned, uge, dag, time, minut, sekund, millisekund, mikrosekund, eller forkortelse kan være følgende y, m, d osv. og flertalsformerne kan være måneder, dage , etc.
retning Det retning parameter kan være siden eller den tomme streng.

Bemærk: Ovenstående syntaks bruges også til intervaloutputformatet og er kendt som postgres_verbose.

I nedenstående eksempel vil vi vise nogle intervalværdier, hvor vi bruger udførlig syntaks :

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

ISO 8601 intervalformat

Udover den verbose syntaks ovenfor, at skrive intervalværdierne ved hjælp af ISO 8601-tid intervaller, giver PostgreSQL os de to måder, som er som følger:

    Designators format Alternativt format

Designatorformatet for ISO 8601 er som følger:

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

I ovenstående format begynder den væsentlige intervalværdi med bogstavet P , og bogstavet T bruges til at definere tidsenhed .

Nedenstående tabel viser ISO 8601 interval enhedsforkortelser:

Forkortelse Beskrivelse
OG Flere år
M Måneder (for datodelen)
I Uger
D Dage
H Timer
M Referater (for tidsdelen)
S Sekunder

Bemærk: M kan være måneder eller minutter baseret på, om det ser ud før eller efter bogstavet T.

Lad os se et eksempel på ISO 8601 betegnelser format for vores bedre forståelse:

Det ISO 8601 designatorformat kan skrives i intervallet af 5 år 4 måneder 3 dage 2 timer 1 minutter 1 sekund :

 P5Y4M3DT2H1M1S 

Og den alternative form for ISO 8601 er som vist nedenfor:

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

Og det begynder også med bogstavet P og bogstavet T, som opdeler tid og dato dele af intervalværdien.

For eksempel ISO 8601 alternativ form kan skrives til 5 år 4 måneder 3 dage 2 timer 1 minut 1 sekund, som vist nedenfor:

 P0005-04-03T02:01:01 

PostgreSQL interval outputformat

PostgreSQL-intervaloutputformatet for intervalværdier kan indstilles ved hjælp af SÆT intervalstil kommando, som vi kan se i nedenstående eksempel:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL indeholder fire forskellige outputformater, såsom:

    iso_8601 postgres_verbose Postgres sql standard

Bemærk: For at formatere intervalværdierne bruger PostgreSQL som standard Postgres-stilen.

Lad os se et eksempel på vores bedre forståelse:

Nedenstående kommando bruges til at vise 5 år 4 måneder 3 dage 2 timer 1 minut 1 sekund i de fire forskellige outputformater:

Til ISO_8601-outputformat

I nedenstående kommando vil vi SÆT det intervalstil som iso_8601 for ovennævnte intervalværdi:

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

Produktion

Efter at have udført ovenstående kommando, får vi nedenstående resultat, som repræsenterer iso_8601 interval output format:

PostgreSQL interval

Til postgres_verbose outputformat

I nedenstående kommando vil vi SÆT det intervalstil som postgres_verbose for ovennævnte intervalværdi:

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

Produktion

Vi får nedenstående resultat efter implementering af ovenstående kommando, som viser postgres_verbose interval output format:

de tidlige mukere
PostgreSQL interval

Til Postgres-outputformat

I nedenstående kommando vil vi SÆT det intervalstil som Postgres for ovennævnte intervalværdi:

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

Produktion

Vi får nedenstående resultat efter vellykket udførelse af ovenstående kommando, som viser Postgres interval output format:

PostgreSQL interval

Til SQL_standard outputformat

I nedenstående kommando vil vi SÆT det intervalstil som sql_standard for ovennævnte intervalværdi:

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

Produktion

Vi får nedenstående resultat efter at have udført ovenstående kommando, som repræsenterer sql_standard interval output format:

PostgreSQL interval

Ændring af PostgreSQL-intervallet til streng

Vi kan bruge TO_CHAR() funktion til at ændre en intervalværdi til en streng.

Syntaksen til at ændre PostgreSQL-intervallet til streng

 TO_CHAR(interval,format) 

Det TO_CHAR() funktion tager første udsagn som en intervalværdi og en anden som format og henter en streng, der viser intervallet i det bestemte format.

I eksemplet nedenfor vil vi bruge TO_CHAR()-funktionen, som konverterer PostgreSQL-intervallet til strengværdien:

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

Produktion

Efter at have udført ovenstående kommando, får vi følgende resultat:

PostgreSQL interval

PostgreSQL Interval-relaterede operatører og funktioner

Interval operatører

Vi kan bruge følgende +, -, * osv. aritmetisk operator for at få intervalværdierne.

Lad os se nedenstående eksempel for bedre forståelse:

I den følgende kommando vil vi bruge aritmetisk operator (+) ved hjælp af PostgreSQL interval datatype:

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

Produktion

Vi får nedenstående resultat ved implementering af ovenstående kommando, som vist nedenfor:

PostgreSQL interval

I den følgende kommando vil vi bruge aritmetisk operator (-) ved hjælp af PostgreSQL interval datatype:

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

Produktion

Ved implementering af ovenstående kommando får vi følgende resultat:

arv java
PostgreSQL interval

I den følgende kommando vil vi bruge aritmetisk operator (*) ved hjælp af PostgreSQL interval datatype:

 SELECT 400 * INTERVAL '5 minute'; 

Produktion

Ved implementering af ovenstående kommando får vi følgende resultat:

PostgreSQL interval

Udtræk data fra et PostgreSQL-interval

Vi kan bruge UDDRAG() funktion til at udtrække felterne fra en intervalværdi, f.eks. år, måned, dato osv .

Syntaksen til at udtrække data fra et PostgreSQL-interval

 EXTRACT(field FROM interval) 

I ovenstående syntaks kan vi bruge år, måned, dato, time, minutter osv., i feltparameteren.

Det uddrag funktion returnerer en værdi af typen dobbelt-præcision, hvis vi ønsker at udtrække fra intervallet.

I det følgende eksempel vil vi bruge UDDRAG() funktion til at hente dobbeltpræcisionsværdien.

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

Produktion

Efter at have udført ovenstående kommando, får vi nedenstående output, som viser dato del for dobbelt-præcision værdier som vist nedenfor:

PostgreSQL interval

Justering af PostgreSQL-intervalværdier

Vi har to funktioner, retfærdig_dage og retfærdig_timer i PostgreSQL, som tillader os at ændre interval på 24 timer betragte som en dag og intervallet på 30 dage betragte som en måned .

Lad os se et eksempel for at forstå, hvordan vi justerer PostgreSQL-intervalværdierne:

I den følgende kommando vil vi bruge Funktionen justify_days og justify_hours:

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

Produktion

Efter at have udført ovenstående kommando, vil vi få følgende resultat, som viser intervallet på 30 dage som en måned og interval på 24 timer som en dag :

PostgreSQL interval

Udover det er retfærdig_interval funktion regulerer intervalværdierne ved hjælp af retfærdig_dage og retfærdig_timer med tilføjede tegnændringer:

I det følgende eksempel vil vi bruge funktionen justifiy_interval med kommandoen SELECT:

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

Produktion

Vi får følgende output efter implementering af ovenstående kommando:

PostgreSQL interval

Oversigt

I den PostgreSQL Interval datatype afsnit, har vi lært følgende emner:

  • Det PostgreSQL intervaldata type bruges til at gemme og implementere en periode i år, måneder, dage, timer, minutter, sekunder.
  • Vi brugte forskellige Interval funktioner , for eksempel, NU(), TO_CHAR(), for at forbedre intervalværdier fra den pågældende tabel.
  • PostgreSQL-intervalværdierne har begge dele input og output intervalformat.
  • Vi kan justere PostgreSQL-intervalværdierne ved hjælp af justify_days(), justify_hours, justify_interval() funktioner.
  • Vi kan bruge UDDRAG() funktion til at udtrække intervalfeltværdierne.