PostgreSQL

Postgresql Generate_Series za ustvarjanje niza datumov

Postgresql Generate_Series za ustvarjanje niza datumov

Poznati morate vnos podatkov v katerem koli sistemu za upravljanje baz podatkov. Med vnašanjem podatkov morda nimate časa in morate prezreti vrzeli v svojih podatkih ali pa si želite dosledne serije zapisov. V tem primeru je za dosego zahtevanega cilja uporaben PostgreSQL generiraj_serijo. Kot že ime pove, mehanizem te funkcije vsebuje 2 ali 3 vhode. jaz.e., create_series vam omogoča ustvarjanje zaporedja zapisov z izhodiščem, končno točko in naraščajočo vrednostjo (neobvezno). Deluje predvsem na dveh vrstah podatkov. jaz.e., Cela števila in časovni žigi. Za ustvarjanje zaporedja datumov se funkcija generiranja_serije uporablja na različne načine.

Sintaksa:

>> Ustvari_serijo ([start], [stop], [neobvezno korak / interval]);

Sintaksa poizvedbe je naslednja:

Imejmo idejo o tem, kako lahko deluje funkcija generiraj_serijo (). Spodaj je nekaj osnovnih primerov. Da bi razumeli koncept te funkcije, moramo namestiti in odpreti lupino ukazne vrstice postgreSQL (psql).

Po uspešni konfiguraciji in ob zagotavljanju localhosta, imena baze podatkov, številke vrat in gesla lahko preidemo na katero koli poizvedbo na psql.

Primer 01: Ustvari_serijo z uporabo DATE plus celoštevilski operator

Naslednja poizvedba vsebuje vgrajeno funkcijo »DATUM« za pridobitev trenutnega datuma. Medtem ko je "a" predpisani operater. Funkcija tega operaterja je dodati to določeno številko (interval) v dnevnem delu datuma. Ali z drugimi besedami, v določenih intervalih se dnevi premaknejo in prikažejo v datumu. V izhodu bo vsak dan dodan interval "9", tj.e., 9 + 9 = 18, nato 27 in tako naprej, dokler ne dosežemo vsote 40.

>> IZBERI current_DATE + s.a AS datumi FROM Generate_series (0,40,9) AS s (a);

Primer 02: Uporaba trenutnega datuma za ustvarjanje datumskih nizov

Za generiranje serij datumov s pomočjo trenutnega datuma uporabljamo funkcijo now (), ki samodejno prevzame trenutni datum iz sistema. Vidite lahko, da ustrezni izhod prikazuje datum do 4 dni. To je zato, ker smo izvedbo omejili z dodajanjem 4 dni na trenutni datum. Kot smo določili čas intervala na 1 dan, se bo vsak datum povečal z 1 dodajanjem na dan

>> izberite * iz generiraj_serijo (zdaj (), zdaj () + '4 dni', '1 dan');

Primer 03: Ustvarjanje datumskih nizov s časovnimi žigi

Časovni žigi ur: Ta funkcija uporablja tudi podatkovni tip časovnih žigov. Časovni žig je v bistvu zaporedje znakov, ki zagotavlja čas in datum povezanega dne. Ustrezna funkcija uporabniku olajša določanje datumov med obema datumoma, ki smo jih predvidevali v poizvedbi. Pridobljen je seznam časovnih žigov od 7. do 11. leta z enim časovnim žigom vsakih 5 ur.

>> izberite * iz generator_series ('2021-3-7 00:00' :: timestamp, '2021-3-11 12:00', '5 ur');

Kot smo že omenili, se poizvedba uporablja tudi za dodajanje minut in sekund z urami za pridobitev boljšega časovnega žiga med dnevi ustreznega časovnega žiga.

Časovni žigi dni: V presežnem primeru smo videli, da se časovni žig uporablja za prikaz datumov med obema datumoma, ki smo jih navedli s spremembo v urah, povečanih za 5. V trenutnem primeru bomo videli časovni žig v dneh. Dnevi se povečajo z 2, saj smo sprožili dvodnevno vrzel v določenem izhodu.

>> izberite * iz generator_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 dni');

Primer 04: Ustvarjanje določenih datumov meseca z uporabo date_trunc

Prvi dan v mesecu

Če želimo ustvariti prvi datum tekočega meseca, bomo uporabili spodnjo poizvedbo.Tu se uporablja posebna funkcija date_trunc, ki skrajša datum z določeno natančnostjo.jaz.e. zdaj ()

>> izberite date_trunc ('mesec', zdaj ());

      Zadnji dan v mesecu

Isti pristop date_trunc bo ustvaril zadnji dan v mesecu.

>> izberite date_trunc ('mesec', zdaj ()) + '1 mesec' :: interval - '1 dan' :: interval kot end_of_month;

Sredi meseca

Sredi meseca dobimo s spreminjanjem prejšnje poizvedbe. Za dosego ustreznega cilja bomo uporabili srednjo funkcijo. Ali pa bomo od zadnjega odšteli 17 dni.

>> izberite date_trunc ('mesec', zdaj ()) + '1 mesec' :: interval - '17 dni ':: interval kot mid_of_month;

Primer 05: Ustvarjanje datumov z uporabo podatkov, povezanih s koledarjem

Tu je primer uporabe podatkov koledarja. Spoznali bomo prestopno leto, tj.e., skupaj dni v mesecu februarju."T" pomeni res pomeni, da je leto prestopno, za "f" pa napačno "dow" predstavlja dneve v tednu. Stolpec »februar« vsebuje skupno število dni v mesecu. "Dan" označuje Janov prvi dan v letu. Po raziskavah se tedni ISO začnejo od ponedeljka, prvi teden v letu pa vsebuje 5. januar v letu.

>> izberite datum :: datum, izvleček ('isodow' od datuma) kot dow, to_char (datum, 'dy') kot dan, izvleček ('iso leto' od datuma) kot "iso leto", izvleček ('teden' od datuma) kot teden, izvleček ('dan' od (datum + interval '2 meseca - 1 dan')) kot feb, izvleček ('leto' od datuma) kot leto, izvleček ('dan' od (datum + interval ' 2 meseca - 1 dan ')) = 29 kot preskok iz generiraj_serijo (datum' 01.01.2010 ', datum' 2020-03-01 ', interval' 1 leto ') kot t (datum);

Isodow je standardni dan v tednu »ISO«. Poizvedba se bo izvajala od leta 2010 do 2020, pri čemer bo manipulirala vsak mesec, teden in dan v letu.

Primer 06: Ustvarjanje serij določenih datumov in števila dni v tednu

V tej poizvedbi bomo datume in številke dni pridobili s filtriranjem dni v tednu. Številčno bomo upoštevali dneve v tednu. Na primer, od 0 do 6. Kjer je 0 nedelja in 6 sobota. V tej poizvedbi boste videli, da smo uporabili pogoj za vnos datumov in številk dni, ki niso v 2 in 5. Na primer, 20. februarja je bila sobota, zato se je pojavilo 6.

>> z dnevi kot (izberite dd, izvleči (DOW iz dd) dw iz create_series ('2021-02-20' :: date, '2021-03-05' :: date, '1 day' :: interval) dd ) izberite * med dnevi, ko dw ni v (2,5);

Zaključek

Kot je omenjeno zgoraj, članek zajema večino osnovnih funkcij, povezanih z ustvarjanjem serij za ustvarjanje datumskih nizov. Podrobni primeri, obravnavani v vseh pogledih, so tako pomembni, da bodo povečali znanje vašega članka.

Kako spremeniti miškin kazalec in velikost, barvo in shemo kazalca v sistemu Windows 10
Kazalec miške in kazalec v operacijskem sistemu Windows 10 sta zelo pomembna vidika operacijskega sistema. To lahko rečemo tudi za druge operacijske s...
Brezplačni in odprtokodni igralni mehanizmi za razvoj iger Linux
Ta članek bo zajemal seznam brezplačnih in odprtokodnih igralnih mehanizmov, ki jih je mogoče uporabiti za razvoj 2D in 3D iger v Linuxu. Obstaja veli...
Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...