PostgreSQL

Postgresql Generate_Series, lai izveidotu datumu sēriju

Postgresql Generate_Series, lai izveidotu datumu sēriju

Jums ir jāpārzina datu ievadīšana jebkurā datu bāzes pārvaldības sistēmā. Ievadot datus, jums, iespējams, nav laika, un jums ir jāignorē datu nepilnības vai vēlaties iegūt konsekventu ierakstu sēriju. Šajā situācijā PostgreSQL generēt_sērija ir piemērota vajadzīgā mērķa sasniegšanai. Kā norāda nosaukums, šīs funkcijas mehānisms satur 2 vai 3 ieejas. i.e., generēt_sērija ļauj ģenerēt ierakstu secību ar sākuma punktu, beigu punktu un pieaugošo vērtību (pēc izvēles). Tas galvenokārt darbojas ar diviem datu tipiem. i.e., Veseli skaitļi un laika zīmogi. Lai izveidotu datumu secību, funkcija generēt_sērija tiek izmantota dažādos veidos.

Sintakse:

>> Ģenerēt_sērijas ([sākums], [apstāties], [izvēles solis / intervāls]);

Vaicājuma sintakses apraksts ir šāds:

Iegūsim priekšstatu par to, kā var darboties funkcija generator_series (). Zemāk ir daži elementāri piemēri. Lai saprastu šīs funkcijas jēdzienu, mums jāinstalē un jāatver komandrindas apvalks postgreSQL (psql).

Pēc veiksmīgas konfigurēšanas un nodrošinot localhost, datu bāzes nosaukumu, porta numuru un paroli, mēs varam iziet jebkuru vaicājumu psql.

01. piemērs: ģenerēt_sērijas, izmantojot DATE plus vesels skaitlis operatoru

Šajā vaicājumā ir iebūvēta funkcija “DATE”, lai ielādētu pašreizējo datumu. Tā kā “a” ir norādītais operators. Šī operatora funkcija ir pievienot konkrēto skaitli (intervālu) dienas dienas daļā. Vai citiem vārdiem sakot, ar noteiktiem intervāliem dienas tiek pārvietotas un norādītas datumā. Izejā “9” intervāls tiks pievienots katru dienu, t.i.e., 9 + 9 = 18, tad 27 un tā tālāk, līdz tiek sasniegta summa 40.

>> ATLASIET pašreizējo_DATUMS + s.a AS datums ir no Generate_series (0,40,9) AS s (a);

02. piemērs: pašreizējā datuma izmantošana datumu sēriju ģenerēšanai

Lai ģenerētu datumu sērijas ar pašreizējā datuma palīdzību, mēs izmantojam funkciju now (), kas automātiski paņem pašreizējo datumu no sistēmas. Varat redzēt, ka atbilstošajā izvadā datums ir līdz 4 dienām. Tas ir tāpēc, ka mēs esam ierobežojuši izpildi, pašreizējam datumam pievienojot 4 dienas. Tā kā mēs esam norādījuši intervāla laiku līdz 1 dienai, katrs datums tiks palielināts ar 1 papildinājumu dienā

>> atlasiet * no ģenerēšanas_sērijas (tagad (), tagad () + '4 dienas', '1 diena');

03. piemērs: Datumu sēriju ģenerēšana, izmantojot Laika zīmogus

Stundu laika zīmogi: Šī funkcija izmanto arī laika zīmogu datu tipu. Laika zīmogs būtībā ir rakstzīmju secība, kas norāda attiecīgās dienas laiku un datumu. Atbilstošā funkcija ļauj lietotājam nodrošināt datumus starp abiem datumiem, kurus mēs iepriekš paredzējām vaicājumā. Tiek iegūts laika zīmogu saraksts no 7. līdz 11. datumam ar vienu laika zīmogu ik pēc 5 stundām.

>> select * no generēt_sērijas ('2021-3-7 00:00' :: timestamp, '2021-3-11 12:00', '5 stundas');

Vaicājums, kā minēts iepriekš, tiek izmantots arī, lai pievienotu minūtes un sekundes ar stundām, lai iegūtu labāku laika zīmogu starp attiecīgā laika zīmoga dienām.

Dienu laika zīmogi: Pārsniedzošajā piemērā mēs redzējām, ka laika zīmogs tiek izmantots, lai parādītu datumus starp diviem attiecīgajiem mūsu norādītajiem datumiem ar izmaiņām stundās, kas palielinātas par 5. Šajā piemērā laika zīmogu redzēsim dienās. Dienas tiek palielinātas ar 2, jo mēs esam izraisījuši 2 dienu starpību konkrētajā produkcijā.

>> select * from generated_series ('2021-03-01' :: timestamptz, '2021-03-19' :: timestamptz, '2 dienas');

04. Piemērs: Konkrētu mēneša datumu ģenerēšana, izmantojot date_trunc

Mēneša pirmā diena

Ja mēs vēlamies ģenerēt kārtējā mēneša pirmo datumu, mēs izmantosim zemāk pievienoto vaicājumu.Šeit izmantotā atšķirīgā funkcija ir date_trunc, kas saīsina datumu ar precizitāti.i.e. tagad ()

>> select date_trunc ('mēnesis', tagad ());

      Mēneša pēdējā diena

Ar to pašu pieeju date_trunc tiks ģenerēta mēneša pēdējā diena.

>> select date_trunc ('mēnesis', tagad ()) + '1 mēnesis' :: intervāls - '1 diena' :: intervāls kā mēneša beigu_;

Mēneša vidus

Mēneša vidus tiek iegūts, mainot iepriekšējo vaicājumu. Lai izmantotu attiecīgo mērķi, mēs izmantosim vidējo funkciju. Vai arī mēs atņemsim 17 dienas no pēdējās.

>> select date_trunc ('mēnesis', tagad ()) + '1 mēnesis' :: intervāls - '17 dienas' :: intervāls kā mēneša vidus;

05. piemērs: Datumu ģenerēšana, izmantojot ar kalendāru saistītus datus

Šeit ir piemērs par kalendāra datu izmantošanu. Mēs uzzināsim lēciena gadu, t.e., kopējās dienas februāra mēnesī.“T” apzīmē patieso, tas nozīmē, ka gads ir lēciena gads, un attiecībā uz “f” tas ir aplams “dow” apzīmē nedēļas dienas. Slejā “Feb” ir norādītas mēneša kopējās dienas. “Diena” apzīmē katra gada pirmo Jan dienu. Saskaņā ar pētījumiem ISO nedēļas sākas no pirmdienas, un gada pirmajā nedēļā ir gada 5. janvāris.

>> izvēlieties datumu :: datums, ekstrakts ('isodow' no datuma) kā dow, to_char (datums, 'dy') kā diena, ekstrakts ('iso gads' no datuma) kā 'iso gads', ekstrakts ('nedēļa' no datuma) kā nedēļu, izrakstu ('diena' no (datums + intervāls '2 mēneši - 1 diena')) kā feb, izrakstu ('gads' no datuma) kā gadu, izvilkumu ('diena' no (datums + intervāls ') 2 mēnesis - 1 diena ')) = 29, kā lēciens no generator_series (datums' 2010-01-01 ', datums' 2020-03-01 ', intervāls' 1 gads ') kā t (datums);

Isodow ir “ISO” standarta nedēļas diena. Vaicājums tiks izpildīts no 2010. līdz 2020. gadam, vienlaikus manipulējot ar katru mēnesi, nedēļu un gada dienu.

06. piemērs: konkrētu datumu un dienu skaitļu sēriju ģenerēšana nedēļā

Šajā vaicājumā mēs iegūsim datumus un dienu numurus, filtrējot dienas nedēļā. Mēs skaitliski apsvērsim nedēļas dienas. Piemēram, sākot no 0 līdz 6. Kur 0 ir svētdiena un 6 ir sestdiena. Šajā vaicājumā redzēsiet, ka esam lietojuši nosacījumu, lai atvestu datumus un dienu numurus, kas nav 2. un 5. Piemēram, 20. februārī tā bija sestdiena, tāpēc parādītais skaitlis ir 6.

>> ar dienām kā (izvēlieties dd, ekstrakts (DOW no dd) dw no generator_series ('2021-02-20' :: date, '2021-03-05' :: date, '1 day' :: intervāls) dd ) izvēlieties * no dienām, kur dw nav (2,5);

Secinājums

Raksts, kā minēts iepriekš, aptver lielāko daļu pamatfunkciju, kas saistītas ar sēriju ģenerēšanu, lai izveidotu datumu sērijas. Katrā aspektā aplūkotie detalizētie piemēri ir tik nozīmīgi, ka tie palielinās jūsu attiecīgā raksta zināšanas.

Atdariniet peles klikšķus, virzot kursoru, izmantojot operētājsistēmā Windows 10 bezklikšķu peli
Peles vai tastatūras lietošana nepareizā pozā, ja to lieto pārmērīgi daudz, var izraisīt daudz veselības problēmu, tostarp spriedzi, karpālā kanāla si...
Pievienojiet peles žestus operētājsistēmai Windows 10, izmantojot šos bezmaksas rīkus
Pēdējos gados datori un operētājsistēmas ir ievērojami attīstījušās. Bija laiks, kad lietotājiem bija jāizmanto komandas, lai pārvietotos pa failu pār...
Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...