PostgreSQL

Postgresql Generate_Series za stvaranje niza datuma

Postgresql Generate_Series za stvaranje niza datuma

Morate biti upoznati s unosom podataka u bilo kojem sustavu za upravljanje bazama podataka. Tijekom unosa podataka možda nećete imati vremena i trebate zanemariti praznine u podacima ili želite neke dosljedne nizove zapisa. U ovoj je situaciji PostgreSQL generiraj_seriju primjenjiv za postizanje potrebnog cilja. Kao što i samo ime govori, mehanizam ove funkcije sadrži 2 ili 3 ulaza. ja.e., generiraj_seriju omogućuje generiranje niza zapisa s početnom točkom, završnom točkom i povećanjem vrijednosti (nije obavezno). Uglavnom radi na dvije vrste podataka. ja.e., Cijeli brojevi i vremenske oznake. Da bi se stvorio slijed datuma, funkcija generiranja_serije koristi se na različite načine.

Sintaksa:

>> Generiraj_seriju ([start], [stop], [izborno korak / interval]);

Opis sintakse upita je sljedeći:

Imajmo ideju kako može generirati funkcija_series (). Ispod je nekoliko osnovnih primjera. Da bismo razumjeli koncept ove funkcije, moramo instalirati i otvoriti ljusku naredbenog retka postgreSQL (psql).

Nakon uspješne konfiguracije i pružanja localhosta, naziva baze podataka, broja porta i lozinke, možemo proći bilo koji upit na psql-u.

Primjer 01: Generiraj_seriju pomoću DATE plus cjelobrojni operator

Sljedeći upit sadrži ugrađenu funkciju "DATUM" za dohvaćanje trenutnog datuma. Dok je "a" operator koji je osiguran. Funkcija ovog operatora je dodavanje tog određenog broja (intervala) u dio dana dana. Ili drugim riječima, s određenim intervalima, dani se pomiču i prikazuju u datumu. U izlazu će se svaki dan dodavati interval "9", tj.e., 9 + 9 = 18, pa 27, i tako dalje, dok se ne postigne zbroj 40.

>> ODABERITE current_DATE + s.a AS datira iz Generate_series (0,40,9) AS s (a);

Primjer 02: Korištenje trenutnog datuma za generiranje serija datuma

Za generiranje serija datuma uz pomoć trenutnog datuma koristimo funkciju now () koja automatski uzima trenutni datum iz sustava. Možete vidjeti da odgovarajući izlaz prikazuje datum do 4 dana. To je zato što smo ograničili izvršenje dodavanjem 4 dana na trenutni datum. Kao što smo osigurali interval intervala do 1 dana, tako će se svaki datum povećavati s 1 zbrajanjem u danu

>> odaberite * iz generiraj_seriju (sada (), sada () + '4 dana', '1 dan');

Primjer 03: Generiranje serija datuma pomoću vremenskih žigova

Oznake vremena: Ova funkcija također koristi tip podataka vremenskih žigova. Oznaka vremena u osnovi je slijed znakova koji daju vrijeme i datum povezanog dana. Odgovarajuća funkcija olakšava korisniku davanje datuma između oba datuma koja smo predviđali u upitu. Dobiva se popis vremenskih žigova od 7. do 11. s jednom vremenskom oznakom svakih 5 sati.

>> odaberite * iz generiraj_seriju ('2021-3-7 00:00' :: timestamp, '2021-3-11 12:00', '5 sati');

Upit, kao što je gore spomenuto, također se koristi za dodavanje minuta i sekundi sa satima kako bi se dobila bolja vremenska oznaka između dana relevantne vremenske oznake.

Vremenske oznake dana: U velikom primjeru vidjeli smo da se vremenska oznaka koristi za prikaz datuma između dva odgovarajuća datuma koja smo unijeli s promjenom u satima uvećanim za 5. U trenutnom primjeru vidjet ćemo vremensku oznaku u danima. Dani se povećavaju s 2 jer smo pokrenuli dvodnevni jaz u određenom izlazu.

>> odaberite * iz create_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 dana');

Primjer 04: Generiranje određenih datuma u mjesecu pomoću date_trunc

Prvi dan u mjesecu

Ako želimo generirati prvi datum tekućeg mjeseca, upotrijebit ćemo upit u nastavku.Ovdje se koristi posebna funkcija date_trunc koja skraćuje datum do zadane preciznosti.ja.e. sada()

>> odaberite date_trunc ('mjesec', sada ());

      Zadnji dan u mjesecu

Isti pristup date_trunc generirat će zadnji dan u mjesecu.

>> odaberite date_trunc ('mjesec', sada ()) + '1 mjesec' :: interval - '1 dan' :: interval kao kraj_mjeseca;

Sredinom mjeseca

Sredina mjeseca dobiva se izmjenom prethodnog upita. Upotrijebit ćemo srednju funkciju za postizanje određenog cilja. Ili ćemo od posljednjeg oduzeti 17 dana.

>> odaberite date_trunc ('mjesec', sada ()) + '1 mjesec' :: interval - '17 dana ':: interval kao sredina_mjeseca;

Primjer 05: Generiranje datuma pomoću podataka povezanih s kalendarom

Evo primjera korištenja podataka iz kalendara. Upoznat ćemo prestupnu godinu, tj.e., ukupno dana u mjesecu veljači."T" označava istinito znači da je godina prijestupna, a za "f" nije točno "dow" predstavlja dane u tjednu. Stupac "Veljača" sadrži ukupne dane u mjesecu. "Dan" označava Janov prvi dan u godini. Prema istraživanjima, tjedni ISO-a počinju od ponedjeljka, a prvi tjedan u godini sadrži 5. siječnja godine.

>> odaberite datum :: datum, ekstrakt ('isodow' od datuma) kao dow, to_char (datum, 'dy') kao dan, ekstrakt ('iso godina' od datuma) kao "iso godina", ekstrakt ('tjedan') od datuma) kao tjedan, ekstrakt ('dan'od (datum + interval' 2 mjeseca - 1 dan ')) kao veljača, ekstrakt (' godina 'od datuma) kao godina, ekstrakt (' dan 'od (datum + interval' 2 mjeseca - 1 dan ')) = 29 kao skok iz generiraj_seriju (datum' 2010-01-01 ', datum' 2020-03-01 ', interval' 1 godina ') kao t (datum);

Isodow je „ISO“ standardni dan u tjednu. Upit će se izvršiti od 2010. do 2020., manipulirajući svaki mjesec, tjedan i dan u godini.

Primjer 06: Generiranje niza određenih datuma i broja dana u tjednu

U ovom upitu dobit ćemo datume i brojeve dana filtrirajući dane u tjednu. Numerički ćemo uzeti u obzir dane u tjednu. Na primjer, počevši od 0 do 6. Gdje je 0 nedjelja, a 6 subota. U ovom ćete upitu vidjeti da smo primijenili uvjet da dovedemo datume i brojeve dana koji nisu u 2 i 5. Primjerice, 20. veljače bila je subota, pa je broj koji se pojavio 6.

>> s danima kao (odaberite dd, izvuci (DOW iz dd) dw iz generiraj_serije ('2021-02-20' :: datum, '2021-03-05' :: datum, '1 dan' :: interval) dd ) odaberite * iz dana kada dw nije u (2,5);

Zaključak

Članak, kao što je gore spomenuto, pokriva većinu osnovnih funkcionalnosti povezanih s generiranjem serija za stvaranje serija datuma. Detaljni primjeri o kojima se raspravlja u svakom aspektu toliko su značajni da će eskalirati znanje vašeg članka.

Kako instalirati i igrati Doom na Linuxu
Uvod u Doom Serija Doom nastala je 90-ih nakon izlaska originalnog Dooma. To je bio trenutni hit i od tog vremena nadalje igraća serija dobila je broj...
Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...