PostgreSQL

Postgresql Generate_Series för att skapa en datumserie

Postgresql Generate_Series för att skapa en datumserie

Du måste känna till datainmatning i alla databashanteringssystem. När du anger data kanske du inte har tid, och du måste ignorera luckor i dina data eller vill ha en konsekvent serie av poster. I denna situation är PostgreSQL generera_serier tillämpliga för att uppnå det önskade målet. Som namnet antyder innehåller mekanismen för denna funktion antingen 2 eller 3 ingångar. i.e., generera_serier låter dig generera en sekvens av poster med en startpunkt, avslutningspunkt och inkrementeringsvärde (valfritt). Det fungerar främst på två datatyper. i.e., Heltal och tidsstämplar. För att skapa en sekvens av datum används funktionen create_series på olika sätt.

Syntax:

>> Generate_series ([start], [stop], [optional steg / intervall]);

Beskrivningen för frågesyntax är som följer:

Låt oss få en uppfattning om hur funktionen generera_serier () kan fungera. Nedan följer några elementära exempel. För att förstå den här funktionens koncept måste vi installera och öppna kommandoradsskalet postgreSQL (psql).

Efter lyckad konfiguration och samtidigt som vi tillhandahåller localhost, databasnamn, portnummer och lösenord kan vi gå igenom alla frågor på psql.

Exempel 01: Generate_series med DATE plus heltaloperator

Följande fråga innehåller en "DATE" inbyggd funktion för att hämta det aktuella datumet. Medan “a” tillhandahålls av operatören. Denna operatörs funktion är att lägga till det specifika numret (intervallet) i dagens del av datumet. Eller med andra ord, med specifika intervall flyttas dagarna och visas i datumet. I utgången läggs intervallet "9" till varje dag, dvs.e., 9 + 9 = 18, sedan 27 och så vidare tills summan av 40 uppnås.

>> VÄLJ current_DATE + s.ett AS datum FRÅN Generate_series (0,40,9) AS s (a);

Exempel 02: Använd nuvarande datum för att generera datumserier

För att generera datumserier med det aktuella datumets hjälp använder vi funktionen now (), som tar det aktuella datumet automatiskt från systemet. Du kan se motsvarande utdata visar datum upp till 4 dagar. Detta beror på att vi har begränsat körningen genom att lägga till fyra dagar till det aktuella datumet. Eftersom vi har angett intervalltiden till 1 dag kommer varje datum att ökas med 1 tillägg i dag

>> välj * från generera_serier (nu (), nu () + "4 dagar", "1 dag");

Exempel 03: Generera datumserier med hjälp av tidsstämplar

Tidsstämplar i timmar: Denna funktion använder också datatypen för tidsstämplar. Tidsstämpeln är i grunden en sekvens av tecken som ger tid och datum för en relaterad dag. Motsvarande funktion underlättar för användaren att ange datum mellan båda datumen vi brukade förutse i frågan. Listan över tidsstämplar från datum 7 till 11 med en tidsstämpel var 5: e timme erhålls.

>> välj * från generera_serier ('2021-3-7 00:00' :: tidsstämpel, '2021-3-11 12:00', '5 timmar');

Frågan, som nämnts ovan, används också för att lägga till minuter och sekunder med timmar för att få en bättre tidsstämpel mellan dagar med relevant tidsstämpel.

Dagens tidsstämplar: I det ovanstående exemplet har vi sett att tidsstämpel används för att visa datum mellan de två respektive datumen vi har angett med ändringen i timmar ökade med 5. I det aktuella exemplet ser vi tidsstämpeln i dagar. Dagarna ökas med 2 eftersom vi har initierat ett två dagars gap i den specifika produktionen.

>> välj * från generera_serier ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 dagar');

Exempel 04: Generera specifika datum i månaden med hjälp av date_trunc

Första dagen i månaden

Om vi ​​vill skapa det första datumet för den aktuella månaden kommer vi att använda frågan som bifogas nedan.Den distinkta funktionen som används här är date_trunc, som avkortar datumet till given precision.i.e. nu()

>> välj date_trunc ('månad', nu ());

      Sista dagen i månaden

Samma tillvägagångssätt date_trunc genererar den sista dagen i månaden.

>> välj date_trunc ('month', now ()) + '1 month' :: interval - '1 day' :: interval as end_of_month;

I mitten av månaden

Mitten av månaden erhålls genom att ändra i föregående fråga. Vi kommer att använda medelfunktionen för att uppnå respektive mål. Eller så drar vi 17 dagar från den sista.

>> välj date_trunc ('månad', nu ()) + '1 månad' :: intervall - '17 dagar ':: intervall som mitten av månaden;

Exempel 05: Generera datum med hjälp av kalenderrelaterade data

Här kommer exemplet med att använda kalenderdata. Vi kommer att lära känna skottåret, dvs.e., totalt antal dagar i februari månad.”T” betyder sant betyder år är ett skottår, och för “f” är det falskt “dow” representerar veckodagarna. Kolumnen "Feb" innehåller totala dagar i månaden. ”Dag” betecknar Jan första dag varje år. Enligt forskning börjar ISO-veckor från måndag och den första veckan i ett år innehåller 5 januari.

>> välj datum :: datum, extrahera ('isodow' från datum) som dow, till_char (datum, 'dy') som dag, extrahera ('iso år' från datum) som "iso år", extrahera ('vecka' från datum) som vecka, extrahera ("dag" från (datum + intervall "2 månad - 1 dag")) som feb, extrahera ("år" från datum) som år, extrahera ("dag" från (datum + intervall) 2 månader - 1 dag ')) = 29 som språng från generera_serier (datum' 2010-01-01 ', datum' 2020-03-01 ', intervall' 1 år ') som t (datum);

Isodow är veckodagens “ISO” -dag. Frågan körs från 2010 till 2020 medan den manipuleras varje månad, vecka och dag på året.

Exempel 06: Genererar serie med specifika datum och dagnummer i veckan

I denna fråga förvärvar vi datum och dagnummer genom att filtrera dagar i en vecka. Vi kommer numeriskt att överväga veckodagarna. Till exempel från 0 till 6. Där 0 är söndag och 6 är lördag. I den här frågan ser du att vi har tillämpat ett villkor för att ta med datum och dagnummer som inte är i 2 och 5. Den 20 februari var det till exempel lördag, så antalet som dök upp är 6.

>> med dagar som (välj dd, extrahera (DOW från dd) dw från generera_serier ('2021-02-20' :: datum, '2021-03-05' :: datum, '1 dag' :: intervall) dd ) välj * från dagar där du inte bor i (2,5);

Slutsats

Artikeln, som nämnts ovan, täcker majoriteten av grundläggande funktioner relaterade till att generera serier för att skapa datumserier. Detaljerade exempel som diskuteras i varje aspekt är så meningsfulla att de kommer att öka din respektive artikels kunskap.

Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...
Hur man laddar ner och spelar Sid Meier's Civilization VI på Linux
Introduktion till spelet Civilization 6 är ett modernt intag av det klassiska konceptet som introducerades i serien Age of Empires-spel. Idén var gans...
Hur man installerar och spelar Doom på Linux
Introduktion till Doom Doom-serien har sitt ursprung på 90-talet efter att den ursprungliga Doom släpptes. Det blev en omedelbar hit och från den tide...