„PostgreSQL“

„Postgresql Generate_Series“, kad sukurtumėte datų seką

„Postgresql Generate_Series“, kad sukurtumėte datų seką

Turite būti susipažinę su duomenų įvedimu bet kurioje duomenų bazės valdymo sistemoje. Įvesdami duomenis gali neturėti laiko ir turite nepaisyti duomenų spragų arba norėti nuoseklios įrašų serijos. Šioje situacijoje „PostgreSQL generuoti_series“ yra naudojama norint pasiekti reikiamą tikslą. Kaip rodo pavadinimas, šios funkcijos mechanizme yra 2 arba 3 įėjimai. i.e., generuoti_series leidžia generuoti įrašų seką su pradiniu tašku, pabaigos tašku ir didėjančia verte (neprivaloma). Tai daugiausia veikia dviem duomenų tipais. i.e., Sveikieji skaičiai ir laiko žymės. Norėdami sukurti datų seką, funkcija generuoti_serija naudojama įvairiai.

Sintaksė:

>> Generate_series ([pradžia], [sustabdyti], [pasirenkama žingsnis / intervalas]);

Užklausos sintaksės aprašymas yra toks:

Įsivaizduokime, kaip gali veikti „generator_series ()“ funkcija. Žemiau yra keletas elementarių pavyzdžių. Norėdami suprasti šios funkcijos sampratą, turime įdiegti ir atidaryti postgreSQL komandinės eilutės apvalkalą (psql).

Sėkmingai sukonfigūravę ir pateikdami localhost, duomenų bazės pavadinimą, prievado numerį ir slaptažodį, galime atlikti bet kokią užklausą psql.

01 pavyzdys: generuoti_series naudojant DATE plius sveikasis operatorius

Šioje užklausoje yra „DATA“ integruota funkcija, skirta dabartinei datai gauti. Kadangi „a“ yra nurodytas operatorius. Šio operatoriaus funkcija yra pridėti tą konkretų skaičių (intervalą) dienos dienos dalyje. Arba kitaip tariant, su tam tikrais intervalais dienos yra perkeliamos ir rodomos datoje. Išvestyje „9“ intervalas bus pridedamas kiekvieną dieną, t.e., 9 + 9 = 18, tada 27 ir taip toliau, kol bus pasiekta 40 suma.

>> PASIRINKITE dabartinę_DATA + s.a AS data nuo Generate_series (0,40,9) AS s (a);

02 pavyzdys: dabartinės datos naudojimas datų sekoms generuoti

Norėdami generuoti datų sekas su dabartinės datos pagalba, mes naudojame funkciją now (), kuri automatiškai paima dabartinę datą iš sistemos. Matote, kad atitinkamame išvestyje rodoma data iki 4 dienų. Taip yra todėl, kad apribojome vykdymą pridedant 4 dienas prie dabartinės datos. Kadangi mes nurodėme intervalo laiką iki 1 dienos, kiekviena data bus padidinta su 1 papildymu per dieną

>> pasirinkite * iš generavimo_serijos (dabar (), dabar () + '4 dienos', '1 diena');

03 pavyzdys: datų sekų generavimas naudojant laiko žymes

Valandų laiko žymos: Ši funkcija taip pat naudoja laiko žymių duomenų tipą. Laiko žymė iš esmės yra simbolių seka, nurodanti susijusios dienos laiką ir datą. Atitinkama funkcija palengvina vartotojui pateikti datas tarp abiejų datų, kurias mes numatėme užklausoje. Gaunamas 7–11 datos laiko žymių sąrašas su viena laiko žyme kas 5 valandas.

>> pasirinkite * iš generator_series ('2021-3-7 00:00' :: timestamp, '2021-3-11 12:00', '5 hours');

Kaip minėta pirmiau, užklausa taip pat naudojama pridėti minutes ir sekundes su valandomis, kad būtų galima gauti geresnę laiko žymę tarp atitinkamos laiko žymos dienų.

Dienų laiko žymos: Viršijančiame pavyzdyje matėme, kad laiko žymė naudojama rodyti datas tarp dviejų mūsų pateiktų datų, keičiant valandas, padidintus 5. Šiame pavyzdyje laiko žymę matysime dienomis. Dienos pridedamos prie 2, nes mes sukėlėme 2 dienų pertrauką konkrečioje produkcijoje.

>> pasirinkite * iš generator_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 dienos');

04 pavyzdys: konkrečių mėnesio datų generavimas naudojant date_trunc

Pirmoji mėnesio diena

Jei norime sugeneruoti pirmą einamojo mėnesio datą, naudosime toliau pateiktą užklausą.Čia naudojama atskira funkcija yra date_trunc, kuri sutrumpina datą iki nurodyto tikslumo.i.e. dabar ()

>> pasirinkite date_trunc ('mėnuo', dabar ());

      Paskutinė mėnesio diena

Tas pats metodas „date_trunc“ sugeneruos paskutinę mėnesio dieną.

>> pasirinkite date_trunc ('mėnuo', dabar ()) + '1 mėnuo' :: intervalas - '1 diena' :: intervalas kaip mėnesio pabaiga;

Mėnesio vidurys

Mėnesio vidurys gaunamas pakeitus ankstesnę užklausą. Mes naudosime vidutinę funkciją, kad gautume atitinkamą tikslą. Arba atimsime 17 dienų iš paskutinės.

>> pasirinkite date_trunc ('mėnuo', dabar ()) + '1 mėnuo' :: intervalas - '17 dienos ':: intervalas kaip mėnesio vidurys;

05 pavyzdys: datų generavimas naudojant su kalendoriumi susijusius duomenis

Čia pateikiamas kalendoriaus duomenų naudojimo pavyzdys. Mes sužinosime keltuosius metus, t.e., visų vasario mėnesio dienų.„T“ reiškia tikrąją, tai metai yra keliamieji metai, o „f“ atveju klaidinga „dow“ reiškia savaitės dienas. Stulpelyje „Vasaris“ pateikiamos visos mėnesio dienos. „Diena“ reiškia pirmąją kiekvienų metų Jano dieną. Remiantis tyrimais, ISO savaitės prasideda nuo pirmadienio, o pirmoje metų savaitėje yra metų sausio 5 d.

>> pasirinkite datą :: datą, ištrauką ('isodow' nuo datos) kaip dow, to_char (datą, 'dy') kaip dieną, ekstraktą ('iso metus' nuo datos) kaip 'iso metus', ekstraktą ('savaitę') nuo datos) kaip savaitė, ištrauka („diena“ nuo (data + intervalas „2 mėnuo - 1 diena“)) kaip vasaris, ištrauka („metai“ nuo datos) kaip metai, išrašas („diena“ nuo (data + intervalas) 2 mėnuo - 1 diena ')) = 29 kaip šuolis iš generator_series (data' 2010-01-01 ', data' 2020-03-01 ', intervalas' 1 metai ') kaip t (data);

„Isodow“ yra „ISO“ standartinė savaitės diena. Užklausa bus vykdoma 2010–2020 m., Manipuliuojant kiekvienu metų mėnesiu, savaite ir diena.

06 pavyzdys: konkrečių datų ir dienų skaičiaus per savaitę generavimas

Šioje užklausoje mes gausime datas ir dienų skaičius filtruodami dienas per savaitę. Skaitiniu būdu atsižvelgsime į savaitės dienas. Pavyzdžiui, pradedant nuo 0 iki 6. Kur 0 yra sekmadienis ir 6 yra šeštadienis. Šioje užklausoje pamatysite, kad pritaikėme sąlygą datoms ir dienų skaičiams pateikti, kurie nėra 2 ir 5. Pavyzdžiui, vasario 20 d., Tai buvo šeštadienis, taigi pasirodęs skaičius yra 6.

>> su dienomis kaip (pasirinkite dd, ištraukite (DOW iš dd) dw iš generator_series ('2021-02-20' :: data, '2021-03-05' :: data, '1 diena' :: intervalas) dd ) pasirinkite * iš dienų, kai dw nėra (2,5);

Išvada

Straipsnis, kaip minėta pirmiau, apima daugumą pagrindinių funkcijų, susijusių su serijų generavimu, kad būtų sukurtos datos. Išsamūs, kiekvienu aspektu aptarti pavyzdžiai yra tokie reikšmingi, kad jie padidins jūsų atitinkamo straipsnio žinias.

Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...
Kaip naudoti „GameConqueror Cheat Engine“ sistemoje „Linux“
Straipsnyje pateikiamas „GameConqueror“ apgaulės variklio naudojimo „Linux“ vadove. Daugelis žaidėjų, žaidžiančių sistemoje „Windows“, dažnai naudoja ...