logo

PostgreSQL-interval

In dit gedeelte gaan we de werking van de PostgreSQL Interval-gegevenstype, en wij zien ook voorbeelden van de Intervalgegevenstype. En meestal gebruikte Interval functies , Bijvoorbeeld, NOW(), TO_CHAR(), EXTRACT(), justify_days(), justify_hours(), justify_interval(). De Input en output formaat voor PostgreSQL-intervalwaarden.

Wat is het PostgreSQL-intervalgegevenstype?

In PostgreSQL wordt de Interval is een ander type gegevenstype dat wordt gebruikt om Time in op te slaan en te implementeren jaren, maanden, dagen, uren, minuten, seconden, enz. En de maanden en dagen waarden zijn gehele waarden , terwijl de tweede veld kan de zijn breuken waarden.

De waarde van het PostgreSQL-intervalgegevenstype omvat 16 bytes opslag grootte, wat helpt om een ​​periode op te slaan met een acceptabel bereik van - 178000000 jaar tot 178000000 jaar.

panda's en numpy

Opmerking: het aantal breukcijfers in het tweede veld staat bekend als de precisie p.

Syntaxis van het gegevenstype PostgreSQL Interval

De syntaxis van het gegevenstype PostgreSQL Interval is als volgt:

 @ interval [ fields ] [ (p) ] 

In de bovenstaande syntaxis hebben we de volgende parameters:

Parameter Beschrijving
velden De veldparameter wordt gebruikt om de tijd weer te geven.
P P wordt gebruikt om de precisiewaarde weer te geven.
@ We kunnen de parameter @ negeren, omdat dit een optionele parameter is.

Laten we een voorbeeldvoorbeeld bekijken om beter te begrijpen hoe we de intervalwaarden kunnen schrijven met @parameter en zonder @parameter :

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

OF

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

Opmerking: we kunnen beide bovenstaande uitspraken gebruiken omdat ze met elkaar overeenkomen. Bovendien kan een intervalwaarde een electieve precisiewaarde p hebben, waarbij het toegestane bereik begint van 0 tot 6.

Voorbeeld van het gegevenstype PostgreSQL Interval

Laten we een voorbeeld bekijken om te begrijpen hoe de Gegevenstype PostgreSQL Interval werken.

In het onderstaande voorbeeld zullen we proberen de tijd te vinden van 2 uur en 30 minuten ervoor, bij de huidige tijd van vorig jaar ; we zullen de volgende commando's gebruiken:

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

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we de onderstaande uitvoer, die wordt weergegeven 2 uur en 30 minuten vóór vorig jaar :

PostgreSQL-interval

We hebben het belangrijkste voorbeeld van het intervalgegevenstype gezien en begrijpen de werking ervan. Nu zullen we het invoer- en uitvoerformaat van zien intervalwaarden.

Ten eerste zullen we de PostgreSQL-intervalwaarde voor het invoerformaat :

PostgreSQL-intervalinvoerformaat

In PostgreSQL hebben we het volgende uitgebreide syntaxis, wat ons helpt bij het schrijven van de intervalwaarden:

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

We hebben de onderstaande parameters, die worden gebruikt in de bovenstaande syntaxis:

Parameter Beschrijving
hoeveelheid A hoeveelheid is een getal dat ook tekens als. accepteert + of -
eenheid De eenheid kan elk zijn millennium, eeuw, decennium, jaar, maand, week, dag, uur, minuut, seconde, milliseconde, microseconde, of afkorting kan de volgende zijn y, m, d, enz. en de meervoudsvormen kunnen de zijn maanden, dagen , enz.
richting De richting parameter kan zijn geleden of de lege string.

Opmerking: de bovenstaande syntaxis wordt ook gebruikt voor het intervaluitvoerformaat en staat bekend als postgres_verbose.

In het onderstaande voorbeeld zullen we enkele intervalwaarden weergeven waarbij we de uitgebreide syntaxis :

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

Het ISO 8601-intervalformaat

Naast de uitgebreide syntaxis hierboven, kunt u de intervalwaarden schrijven met behulp van ISO 8601-tijd intervallen biedt PostgreSQL ons de twee manieren, die als volgt zijn:

    Aanduiders formaat Alternatief formaat

Het aanduidingsformaat voor ISO 8601 is als volgt:

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

In het bovenstaande formaat begint de essentiële intervalwaarde met de brief P , en de brief T wordt gebruikt om de tijd-van-dag-eenheid .

De onderstaande tabel toont de ISO 8601-interval afkortingen van eenheden:

Afkorting Beschrijving
EN Jaren
M Maanden (voor het datumgedeelte)
IN Weken
D Dagen
H Uur
M Minuten (voor het tijdsdeel)
S Seconden

Opmerking: De M kan maanden of minuten zijn, afhankelijk van of deze voor of na de letter T lijkt.

Laten we er een voorbeeld van zien ISO 8601-aanduidingen formaat voor ons beter begrip:

De ISO 8601-aanduidingsformaat kan worden geschreven voor het interval van 5 jaar 4 maanden 3 dagen 2 uur 1 minuten 1 seconde :

 P5Y4M3DT2H1M1S 

En de alternatieve vorm van ISO8601 is zoals hieronder weergegeven:

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

En het begint ook met de letter P en de letter T, die de splitsing maakt tijd en datum delen van de intervalwaarde.

Bijvoorbeeld de ISO 8601 alternatieve vorm voor geschreven kan worden 5 jaar 4 maanden 3 dagen 2 uur 1 minuut 1 seconde, zoals hieronder weergegeven:

 P0005-04-03T02:01:01 

PostgreSQL-intervaluitvoerformaat

Het PostgreSQL-intervaluitvoerformaat van intervalwaarden kan worden ingesteld met behulp van de SET intervalstijl commando, zoals we kunnen zien in het onderstaande voorbeeld:

 SET intervalstyle = 'iso_8601'; 

PostgreSQL bevat vier verschillende uitvoerformaten, zoals:

    iso_8601 postgres_verbose Postgres sql-standaard

Opmerking: om de intervalwaarden op te maken, gebruikt PostgreSQL standaard de Postgres-stijl.

Laten we een voorbeeld zien van ons betere begrip:

Het onderstaande commando wordt gebruikt om het 5 jaar 4 maanden 3 dagen 2 uur 1 minuut 1 seconde in de vier verschillende uitvoerformaten:

Voor ISO_8601-uitvoerformaat

In de onderstaande opdracht zullen we dat doen SET de intervalstijl als iso_8601 voor de bovengenoemde intervalwaarde:

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

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we het onderstaande resultaat, dat de iso_8601 intervaluitvoerformaat:

PostgreSQL-interval

Voor het uitvoerformaat postgres_verbose

In de onderstaande opdracht zullen we dat doen SET de intervalstijl als postgres_verbose voor de bovengenoemde intervalwaarde:

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

Uitvoer

We krijgen het onderstaande resultaat na het implementeren van de bovenstaande opdracht, die de postgres_verbose intervaluitvoerformaat:

wijzer in c
PostgreSQL-interval

Voor Postgres-uitvoerformaat

In de onderstaande opdracht zullen we dat doen SET de intervalstijl als Postgres voor de bovengenoemde intervalwaarde:

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

Uitvoer

We krijgen het onderstaande resultaat na het succesvol uitvoeren van de bovenstaande opdracht, die de Postgres intervaluitvoerformaat:

PostgreSQL-interval

Voor SQL_standard uitvoerformaat

In de onderstaande opdracht zullen we dat doen SET de intervalstijl als sql_standaard voor de bovengenoemde intervalwaarde:

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

Uitvoer

We krijgen het onderstaande resultaat na het succesvol uitvoeren van de bovenstaande opdracht, die de sql_standaard intervaluitvoerformaat:

PostgreSQL-interval

Het PostgreSQL-interval wijzigen in tekenreeks

Wij kunnen gebruik maken van de TO_CHAR() functie om een ​​intervalwaarde in een tekenreeks te wijzigen.

De syntaxis voor het wijzigen van het PostgreSQL-interval naar tekenreeks

 TO_CHAR(interval,format) 

De TO_CHAR() functie neemt de eerste verklaring als een intervalwaarde en nog een als de formaat en haalt een string op, waarbij het interval in het specifieke formaat wordt weergegeven.

In het onderstaande voorbeeld gebruiken we de functie TO_CHAR(), die het PostgreSQL-interval omzet in de tekenreekswaarde:

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

Uitvoer

Nadat we de bovenstaande opdracht succesvol hebben uitgevoerd, krijgen we het onderstaande resultaat:

PostgreSQL-interval

PostgreSQL-intervalgerelateerde operators en functies

Interval-operatoren

Wij kunnen het volgende gebruiken +, -, *, etc. rekenkundige operator om de intervalwaarden te verkrijgen.

Laten we het onderstaande voorbeeld bekijken voor een beter begrip:

In de volgende opdracht gebruiken we de rekenkundige operator (+) met behulp van het PostgreSQL-intervalgegevenstype:

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

Uitvoer

We krijgen het onderstaande resultaat bij het implementeren van de bovenstaande opdracht, zoals hieronder weergegeven:

PostgreSQL-interval

In de volgende opdracht gebruiken we de rekenkundige operator (-) met behulp van het PostgreSQL-intervalgegevenstype:

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

Uitvoer

Bij het implementeren van de bovenstaande opdracht krijgen we het onderstaande resultaat:

PostgreSQL-interval

In de volgende opdracht gebruiken we de rekenkundige operator (*) met behulp van het PostgreSQL-intervalgegevenstype:

commando chown
 SELECT 400 * INTERVAL '5 minute'; 

Uitvoer

Bij het implementeren van de bovenstaande opdracht krijgen we het onderstaande resultaat:

PostgreSQL-interval

Gegevens extraheren uit een PostgreSQL-interval

Wij kunnen gebruik maken van de EXTRACT() functie om de velden uit een intervalwaarde te extraheren, bijvoorbeeld jaar, maand, datum, enz .

De syntaxis voor het extraheren van gegevens uit een PostgreSQL-interval

 EXTRACT(field FROM interval) 

In de bovenstaande syntaxis kunnen we de jaar, maand, datum, uur, minuten , enz., in de veldparameter.

De extract functie retourneert een waarde van het type dubbele precisie als we uit het interval willen extraheren.

In het volgende voorbeeld gebruiken we de EXTRACT() functie om de waarde met dubbele precisie op te halen.

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

Uitvoer

Nadat we de bovenstaande opdracht met succes hebben uitgevoerd, krijgen we de onderstaande uitvoer, waarin de datumgedeelte voor de dubbele precisie waarden zoals hieronder weergegeven:

PostgreSQL-interval

PostgreSQL-intervalwaarden aanpassen

Wij hebben twee functies, rechtvaardigen_dagen en rechtvaardigen_uren in PostgreSQL, waarmee we de interval van 24 uur beschouw als op een dag en het interval van 30 dagen beschouw als een maand .

Laten we een voorbeeld bekijken om te begrijpen hoe we de PostgreSQL-intervalwaarden aanpassen:

In de volgende opdracht gebruiken we de justify_days en justify_hours-functie:

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

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we het volgende resultaat, dat het interval weergeeft van 30 dagen als één maand en de interval van 24 uur als één dag :

PostgreSQL-interval

Daarnaast is de rechtvaardig_interval functie regelt de intervalwaarden met behulp van rechtvaardigen_dagen en rechtvaardigen_uren met toegevoegde tekenwijzigingen:

In het volgende voorbeeld gebruiken we de justifiy_interval-functie met de opdracht SELECT:

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

Uitvoer

We krijgen de volgende uitvoer na het implementeren van de bovenstaande opdracht:

PostgreSQL-interval

Overzicht

In de Gegevenstype PostgreSQL Interval sectie hebben we de volgende onderwerpen geleerd:

  • De PostgreSQL-intervalgegevens type wordt gebruikt om een ​​periode in op te slaan en te implementeren jaren, maanden, dagen, uren, minuten, seconden.
  • Wij hebben verschillende gebruikt Intervalfuncties , Bijvoorbeeld, NU(), TO_CHAR(), om intervalwaarden uit de specifieke tabel te verbeteren.
  • De PostgreSQL-intervalwaarden hebben beide input en output interval formaat.
  • We kunnen de PostgreSQL-intervalwaarden aanpassen met behulp van justify_days(), justify_hours, justify_interval() functies.
  • Wij kunnen gebruik maken van de EXTRACT() functie om de intervalveldwaarden te extraheren.