Postgres legger til dager til dags dato

Postgres legger til dager til dags dato
PostgreSQL bruker en datatype for å lagre verdier i form av datoer. Denne artikkelen vil kaste lys over å legge dager til datoene gjennom forskjellige kommandoer i PostgreSQL.

Vi bruker ganske enkelt valgkommandoen med dette nøkkelordet for å vise gjeldende dato. Current_date hentes fra systemet der PostgreSQL -databasen er konfigurert. Så vi vil bruke denne kommandoen for å se datoen for nå. PostgreSql følger et standardformat på datoen. Det er 'yyyy-mm-dd'.

>> Velg Current_Date;

Nå vil vi legge en enkelt dag til gjeldende dato. Intervall er en datatype som manipulerer dataene i form av dager, måneder, uker. etc. Ved å gjøre dette vil tidsstempelet vise datoen uten tidssonen. Bare formatet for tiden vises sammen med gjeldende dato.

>> Velg Current_Date + Interal '1 Day';

Som vi har nevnt ovenfor, er den nåværende datoen 19. februar, så i tillegg til en dag på inneværende dag, vil den bli 20-02-2022.

Tilsvarende, hvis vi bare legger til dager på gjeldende dato uten å bruke ordet 'intervall', vil bare vise datoen.

>> Velg Current_Date + 4;

Så fra den resulterende verdien kan du se at bare datoen etter 4 dager vises. Nå, hvis vi legger til søkeordintervallet i samme kommando over, vil den resulterende verdien vises igjen sammen med tidssonen.

I stedet for å bruke nøkkelordet 'Current_date', vil vi direkte bruke datoen vi ønsker å legge til dager. Med søkeordintervallet vil 7 dager bli lagt til.

>> Velg '2002-06-27' :: dato + intervall '7 dag';

Dette vil legge til 7 dager til 27. juni. Ved å gjøre dette, vil måneden bli endret og skiftet mot juli.

Til nå har vi sett enkelt datoformat og tillegg av dager i datoen. Men nå vil vi se tillegg av dager i datoene som er til stede i tabellen. En tabell som heter 'Date_days' er opprettet med kolonnene som har ID -er med varer og utløpsdatoene for produktet. Datoen er en innebygd funksjon i PostgreSQL, så vi følger datoformatet mens vi legger inn data.

>> Opprett tabelldato_dager (ITEM_ID SERIAL, EXPIRY_DATE DATO);

Etter å ha opprettet tabellen, vil vi nå legge til noen data ved å sette inn rader i tabellen.

>> Sett inn Date_Days (Expiry_Date) verdier ('2020-04-01'), ('2020-04-04'), ('2020-04-05'), ('2020-04-07'), ((( '2020-04-08'), ('20202-04-10'), ('2020-04-11'), ('20202-04-12');

Etter å ha satt inn data, kan du se at en melding vises at 8 rader er satt inn i tabellen. Vi har ikke lagt inn ID -er i kolonnen til Item_id, fordi de numeriske verdiene automatisk genereres av PostgreSQL.

Nå vil vi se posten fra Select -setningen.

>> velg * fra date_days;

Kolonnen Expiry_Date blir endret ved å legge til dager til datoene i hver rad. Vi har brukt en betingelse her der 10 dager vil bli lagt til de utløpsdatoene for produkter som ligger i et bestemt område vi har brukt i kommandoen. For endring har vi brukt en oppdateringskommando; Kolonnenavnet som skal påvirkes blir nevnt etter nøkkelordet 'Set' i oppdateringskommandoen. Videre brukes en valgt uttalelse til å vise alle postene til tabellen for å se endringen vi har brukt.

>> Oppdater dato_days Sett Expiry_Date = Expiry_Date + Interal '10 Day 'hvor Expirt_Date mellom' 2020-04-01 'og' 2020-04-07 ';
>> velg * fra date_days;

Fra den resulterende verdien kan du observere at datoene mellom første april 2020 til 7. april 2020 ved utførelse blir berørt, og 10 dager vil bli lagt til deres nåværende datoer i hver rad. Mens andre data som har utløpsdatoer under 1. april og over 7. april, vil ha forblitt upåvirket. IDene fra 5 til 8 vises som den er. Mens ID fra 1 til 4 vises med tillegg på 10 dager. Alle de radene som er berørt av kommandoen, vises kollektivt på slutten av forholdet.

Legg til virkedager til datoen

Vi vil legge til virkedagene til datoen som er nevnt i kommandoen. PostgreSql, gi dette anlegget til å legge til spesifiserte rader direkte. Virkedager er arbeidsdagene i uken fra mandag til fredag. Disse er 5 dager i uken.

Vi har sett tillegg av dager ved å bruke antall dager i kommandoen, men nå vil vi legge til dager i datoen ved å bruke virkedager.

med Business_days AS
(Velg Date_d, Extract (Dow fra Date_D) Day_of_week
Fra generere_serier ('2022-02-10' :: dato, '2022-02-27' :: dato, '4 dag' :: intervall) date_d)
Velg date_d + intervall '2 dag', day_of_week
Fra Business_Days
Der DAY_OF_VEK IKKE IN (6,0);

En midlertidig tabell er opprettet fra ovennevnte kode som har to kolonner date_d, og day_of_week. Ved å bruke en innebygd funksjon av Postgres, Generating_series (), vil vi generere datoer mellom et område på to datoer. Og disse datoene vil bli lagret i kolonnedato_d.

Inne i SELECT -setningen om med leddet, blir dagen på en uke trukket ut ved å bruke en ekstraktfunksjon (DOW fra DATE_D) -funksjonen fra Date_d -kolonnen, og deretter blir disse ekstraherte datoene lagret i den andre kolonnen.

Den andre valgte uttalelsen inneholder tillegget med intervallet på 2 dager, ukens dag fra Business_days. Vi har brukt et filter her for å hente datoen fra datakolonnen ved å legge til 2 i hver dato som er en virkedag. Og ved å bruke en hvor leddet, vil det vise alle dagene bortsett fra de som er av 6 eller 0.

Nå ser vi den første kolonnen som har datoer med tillegg av to på hver dato. Som vi har startet fra 10-02-2022, så legg til 2 i den, vil den bli 12; Dette er hva den første raden inneholder den datoen. Så igjen brukes et intervall på 4 datoer, så det har blitt 16 til datoen 27 er nådd. Når du nå snakker om den andre kolonnen som er DAY_OF_WEEK som, vil vise dagnummeret fra 1 til 5 for å vise forretningsdager. Ettersom den opprinnelige datoen er 10, så 10. februar 2020, er det torsdag, og ifølge nummerering er det den fjerde dagen i uken. Lignende logikk brukes på de gjenværende radene.

Legg til dag ved å bruke en funksjon

En funksjon opprettes for å legge til dager til datoen. Denne funksjonen vil ta parametere for dagers intervall, new_date. Og den returnerer datoen ved å ringe funksjonen. Logikken inneholder den utvalgte setningen som viser New_Date og dagene som skal legges til.

La oss nå kalle funksjonen.

>> velg * fra add_in_days (intervall '3 dag', '2021-07-04' :: dato);

Dette vil returnere datoen for å få 3 dager lagt til datoen som er gitt.

Konklusjon

Artikkelen inneholder datofunksjonen, i hvilke dager legges til de spesifiserte datoene, enten gjeldende datoer eller de som er skrevet av brukeren manuelt. Vi har brukt enkle kommandoer og også på bordene også. Denne funksjonen til PostgreSQL hjelper brukeren med å manipulere data ved å endre datoene for å hente posten til en bestemt dato.