PostgreSQL

Postgresql Generate_Series egy dátumsor létrehozásához

Postgresql Generate_Series egy dátumsor létrehozásához

Bármely adatbázis-kezelő rendszerben ismernie kell az adatbevitelt. Az adatok bevitele közben előfordulhat, hogy nincs ideje, és figyelmen kívül kell hagynia az adatok hiányosságait, vagy konzisztens rekordok sorozatára van szüksége. Ebben a helyzetben a PostgreSQL generál_sorozat alkalmazható a kívánt cél elérésére. Ahogy a neve is jelzi, ennek a funkciónak a mechanizmusa 2 vagy 3 bemenetet tartalmaz. én.e., A generator_sorozat lehetővé teszi rekordok sorozatának létrehozását kezdőponttal, végponttal és növekményes értékkel (opcionális). Főleg két adattípuson működik. én.e., Egész számok és időbélyegek. Dátumsorozat létrehozásához a generátor_sorozat függvényt különböző módon használják.

Szintaxis:

>> Készítsen_sorozatot ([kezdet], [leállítás], [opcionális lépés / intervallum]);

A lekérdezési szintaxis leírása a következő:

Vegyünk egy ötletet arról, hogyan teljesíthet a generator_series () függvény. Az alábbiakban bemutatunk néhány elemi példát. A funkció fogalmának megértéséhez telepítenünk kell és meg kell nyitnunk a postgreSQL parancssori héjat (psql).

Sikeres konfigurálás után és a localhost, az adatbázis név, a portszám és a jelszó megadása mellett bármelyik lekérdezést végigvihetjük a psql-n.

01. példa: Készítsen_sorozatot a DATE plusz egész operátor használatával

A következő lekérdezés tartalmaz egy „DATE” beépített függvényt az aktuális dátum lekérésére. Mivel az „a” az üzemeltető. Ennek a szolgáltatónak az a feladata, hogy az adott számot (intervallumot) hozzáadja a dátum napi részéhez. Vagy más szavakkal, meghatározott időközönként a napok eltolódnak és megjelennek a dátumban. A kimenetben minden nap hozzáadódik a „9” intervallum, azaz.e., 9 + 9 = 18, majd 27 és így tovább, amíg el nem éri a 40 összegét.

>> SELECT current_DATE + s.egy AS a FROM Generate_series (0,40,9) AS s (a) dátumától származik;

02. példa: Az aktuális dátum felhasználása a dátumsorok előállításához

A dátumsorok előállításához az aktuális dátum segítségével a now () függvényt használjuk, amely automatikusan kiveszi az aktuális dátumot a rendszerből. Láthatja, hogy a megfelelő kimenet legfeljebb 4 napos dátumot mutat. Ennek oka az, hogy korlátoztuk a végrehajtást azzal, hogy 4 napot adtunk az aktuális dátumhoz. Mivel az intervallum időtartamát 1 napra határoztuk meg, így minden dátumot naponta 1 összeadással növekszünk

>> válasszon * a generációs_sorozat közül (most (), most () + '4 nap', '1 nap');

03. példa: Dátumsorok előállítása időbélyegek használatával

Órák időbélyegei: Ez a funkció az időbélyegek adattípusát is használja. Az időbélyeg alapvetően egy karaktersorozat, amely megadja a kapcsolódó nap idejét és dátumát. A megfelelő függvény megkönnyíti a felhasználót abban, hogy dátumokat adjon meg mindkét olyan dátum között, amelyet előre használtunk a lekérdezésben. Megkapja a 7. és 11. dátum közötti időbélyegek listáját, 5 óránként egy időbélyeggel.

>> select * from generációs_sorozat ('2021-3-7 00:00' :: időbélyeg, '2021-3-11 12:00', '5 óra');

A lekérdezés, amint azt a fentiekben említettük, percek és másodpercek órákkal történő hozzáadására is szolgál, hogy jobb időbélyeget kapjon a releváns időbélyegző napjai között.

Napok időbélyegei: A túllépő példában azt láttuk, hogy az időbélyegzővel a két megfelelő dátum közti dátumokat mutatjuk be, amelyekben a változtatást 5 órával növeltük órákban. A jelenlegi példában az időbélyeget napokban fogjuk látni. A napok száma 2-vel növekszik, mivel az adott kimenetben 2 napos rést indítottunk.

>> select * a generációs_sorozatból ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 nap');

44. példa: A hónap meghatározott dátumainak előállítása a date_trunc segítségével

A hónap első napja

Ha az aktuális hónap első dátumát szeretnénk előállítani, akkor az alább mellékelt lekérdezést fogjuk használni.Az itt használt külön függvény a date_trunc, amely a pontosságot csonkolja.én.e. Most()

>> select date_trunc ('hónap', most ());

      A hónap utolsó napja

Ugyanez a date_trunc megközelítés generálja a hónap utolsó napját.

>> válassza a date_trunc ('hónap', most ()) + '1 hónap' :: intervallum - '1 nap' :: intervallumot a hónap végének;

A hónap közepe

A hónap közepét az előző lekérdezés módosításával kapjuk meg. Az átlagfüggvényt felhasználjuk az adott cél elérésére. Vagy kivonunk 17 napot az utolsóból.

>> válassza a date_trunc ('hónap', most ()) + '1 hónap' :: intervallum - '17 nap ':: intervallumot a hónap közepén;

05. példa: Dátumok előállítása naptárhoz kapcsolódó adatok felhasználásával

Itt jön a példa a naptáradatok felhasználására. Megismerjük a szökő évet, azaz.e., a februári hónap összes napja.A „t” azt jelenti, hogy valódi azt jelenti, hogy az év szökőév, az „f” esetében pedig hamis „dow” a hét napjait jelenti. A „február” oszlop a hónap összes napját tartalmazza. A „nap” Jan minden év első napját jelöli. A kutatások szerint az ISO hetei hétfőtől kezdődnek, és az év első hete az év január 5-ét tartalmazza.

>> válassza a dátumot: dátumot, kivonatot ('isodow' dátumtól) dow-ként, to_char (dátum, 'dy') napként, kivonatot ('iso év' dátumtól kezdve) "iso évként", kivonatot ('hét') dátumtól) hétként, kivonat („nap” -tól (dátum + intervallum „2 hónap - 1 nap”)) febr., kivonat („év” dátumtól) évként, kivonat („nap” -tól (dátum + intervallum) 2 hónap - 1 nap ')) = 29, ugrás a generátor_sorozatból (dátum: "2010-01-01", dátum: "2020-03-01", intervallum: "1 év"), mint t (dátum);

Az Isodow a hét „ISO” szabványos napja. A lekérdezés 2010 és 2020 között fog végrehajtódni, miközben az év minden hónapját, hetét és napját manipulálja.

06. példa: Adott dátumok és napok sorozatának generálása a héten

Ebben a lekérdezésben a dátumokat és a napok számát úgy kapjuk meg, hogy egy napban kiszűrjük a napokat. Számszerűen figyelembe vesszük a hét napjait. Például 0-tól 6-ig. Ahol 0 vasárnap és 6 szombat. Ebben a lekérdezésben azt fogja látni, hogy egy feltételt alkalmaztunk olyan dátumok és napszámok behozatalára, amelyek nem a 2. és az 5. számban szerepelnek. Például február 20-án szombat volt, tehát a megjelent szám 6.

>> napokkal (válasszon dd-t, kivonat (DOW-t dd-ből) dw a generációs_sorozatból ('2021-02-20' :: date, '2021-03-05' :: date, '1 day' :: interval ) válasszon * azon napok közül, ahol dw nem szerepel a (2,5) pontban;

Következtetés

A cikk, amint azt fentebb említettük, a dátumsorok létrehozásához szükséges sorozatok létrehozásával kapcsolatos alapvető funkciók többségét lefedi. A minden szempontból tárgyalt részletes példák annyira értelmesek, hogy növelik az adott cikk ismereteit.

A legjobb Gamepad Mapping alkalmazások Linuxhoz
Ha egy tipikus billentyűzet és egér beviteli rendszer helyett szeretnél játékokat játszani Linuxon egy játékvezérlővel, van néhány hasznos alkalmazás ...
Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...
HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...