Datoer og tider er viktige, de hjelper til med å holde ting organisert og er et integrert aspekt av enhver programvareoperasjon.

Å jobbe effektivt med dem i databasen kan noen ganger virke forvirrende, enten det er å jobbe på tvers av de forskjellige tidssonene, legge til / trekke fra datoer og andre operasjoner.

Lær de forskjellige MySQL-funksjonene som er tilgjengelige for å enkelt håndtere og administrere datoer / tider i databasen din.

Arbeide med tidssoner

For å holde ting standardisert, bør du bare jobbe med datoer / tider i UTC-tidssone. Hver gang du oppretter en forbindelse til MySQL-databasen, bør du bytte tidssone til UTC, noe som kan gjøres med følgende SQL-setning:

SET TIME_ZONE = '+0: 00'

Siden alle datoer nå blir lagret i UTC, vet du alltid hva du jobber med, noe som gjør ting mer forenklet og rett frem.

Når det er nødvendig kan du enkelt konvertere tidssonen av hvilken som helst dato / tidsstempelverdi med det praktiske CONVERT_TZ () MySQL-funksjon. Du må vite forskyvningen først, for eksempel er PST på vestkysten av Nord-Amerika UTC -08: 00, så du kan bruke:

PolyTime er den beste tidssonekonverteringsappen for flere byer samtidig

PolyTime, en ny app fra MakeUseOf, gjør det enkelt å sammenligne tidssoner over hele verden. Her er hva du kan gjøre med det og hvordan det fungerer.

VELG CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');

Dette resulterer i 2021-02-04 13:47:23 som er helt riktig. De tre argumentene ble overført til CONVERT_TZ () er først datetid / tidsstempel du begynner med (bruk nå () for gjeldende tid), vil den andre alltid være '+0:00' siden alle datoer blir tvunget til UTC i databasen, og den siste er forskyvningen vi ønsker å konvertere datoen til.

Legg til / trekk datoer

Mange ganger må du legge til eller trekke fra datoer, for eksempel hvis du trenger å hente poster fra for en uke siden, eller planlegge noe en måned fra nå.

Heldigvis har MySQL det utmerkede DATE_ADD () og DATE_SUB () funksjoner som gjør denne oppgaven ekstremt enkel. For eksempel kan du trekke to uker fra gjeldende dato med SQL-setningen:

VELG DATE_SUB (nå (), intervall 2 uker);

Hvis du i stedet ønsket å legge til tre dager i et eksisterende tidsstempel, vil du bruke:

VELG DATE_ADD ('2021-02-07 11:52:06', intervall 3 dager);

Begge funksjonene fungerer likt, det første argumentet er tidsstempelet du begynner med, og det andre argumentet er intervallet for å legge til eller trekke fra. Det andre argumentet er alltid formatert på samme måte som begynner med ordet intervall etterfulgt av en numerisk verdi og selve intervallet, som kan være noe av følgende: sekund, minutt, time, dag, uke, måned, kvartal, år.

For et annet eksempel, hvis du ønsket å hente alle pålogginger som skjedde de siste 34 minuttene, kan du bruke en SQL-setning som:

VELG * FRA innlogginger HVOR login_date> = DATE_SUB (nå (), intervall 45 minutter);

Som du kan se, vil dette hente alle poster fra pålogginger tabell med en påloggingsdato som er større enn gjeldende tid minus 45 minutter, eller med andre ord de siste 45 minuttene.

Forskjellen mellom datoene

Noen ganger må du finne ut hvor mye tid som har gått mellom to datoer. Du kan enkelt få antall dager mellom to forskjellige datoer med DATEDIFF funksjon, for eksempel SQL-setningen nedenfor:

VELG DATEDIFF (nå (), '2020-12-15');

De DATEDIFF funksjon tar to argumenter, som begge er dato- / tidsstempler og gir antall dager mellom dem. Ovennevnte eksempel viser antall dager som har gått fra 15. desember 2020 til i dag.

For å få antall sekunder mellom to datoer, vises TO_SECONDS () funksjonen kan være nyttig, for eksempel:

VELG TO_SECONDS (nå ()) - TO_SECONDS ('2021-02-05 11:56:41');

Dette vil føre til antall sekunder mellom de to oppgitte datoene.

Trekk ut segmenter fra datoer

Det er forskjellige MySQL-funksjoner som lar deg enkelt trekke ut spesifikke segmenter fra datoer, for eksempel hvis du bare ville ha måned, årstid eller time. Her er noen eksempler på slike funksjoner:

VELG MÅNED ('2021-02-11 15:27:52');
VELG TIMEN (nå ());
VELG DAYOFYEAR ('2021-07-15 12:00:00');

Ovennevnte SQL-setninger vil resultere i 02, den aktuelle timen, og 196 ettersom 15. september er den 196. dagen i året. Her er en liste over tilgjengelige datoutvinningsfunksjoner, hver tar bare ett argument, datoen blir hentet fra:

- SEKUND()
- MINUTT ()
- HOUR ()
- DAG ()
- UKE () - Nummer 0 - 52 som definerer uken i løpet av året.
- MÅNED ()
- KVARTAL () - Nummer 1 - 4 som definerer årets kvartal.
- ÅR ()
- DAYOFYEAR () - Dagen på året (f.eks. 15. september = 196).
- LAST_DAY () - Den siste dagen i den gitte måneden.
- DATE () - Datoen i ÅÅÅÅ-MM-DD-format uten klokkeslett.
- TID () Tiden i HH: II: SS-format uten dato.
- TO_DAYS () - Antall dager siden A.D. 0.
- TO_SECONDS () - Antall sekunder siden A.D. 0.
- UNIX_TIMESTAMP () - Antall sekunder siden epoken (1. januar 1970)

For eksempel, hvis du kanskje bare ønsket å hente måneden og året som alle brukere ble opprettet, kan du bruke en SQL-setning som:

VELG id, MÅNED (created_at), YEAR (created_at) FRA brukere;

Dette vil hente alle poster i brukere tabellen og viser id #, måned og år hver bruker ble opprettet i.

Gruppere poster etter datoperiode

En utmerket bruk av datofunksjoner er muligheten til å gruppere poster etter datoperiode ved hjelp av GRUPPE AV i SQL-setningene dine. For eksempel, kanskje du ønsker å trekke det totale beløpet på alle bestillinger i 2020 gruppert etter måned. Du kan bruke en SQL-setning som:

SELECT MONTH (created_at), SUM (amount) FROM orders WHERE created_at MELLOM '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH (created_at);

Dette vil hente alle bestillinger som ble plassert i år 2020, gruppere dem etter den måneden de ble opprettet, og returnere 12 poster som viser totalbeløpet som er bestilt hver måned i året.

Vær oppmerksom på at for bedre indeksytelse er det alltid best å unngå å bruke datofunksjoner som f.eks ÅR() innenfor WHERE-setningen til SQL-setninger, og bruk i stedet MELLOM som vist i eksemplet ovenfor.

Aldri bli forvirret med datoer igjen

Ved å bruke kunnskapen ovenfor kan du nå effektivt arbeide med, oversette og utføre operasjoner i datoer og tider i et bredt spekter av brukssaker.

Husk å alltid bruke UTC når du arbeider med datoer for enkelhets skyld, og bruk tipsene ovenfor for å administrere effektivt datoer i programvaren din, enten det er for å fullføre enkle beregninger eller enkelt hente rapporter gruppert etter dato perioder.

Hvis du er litt ny i SQL, må du sjekke ut disse viktige SQL-kommandoer for å forbedre SQL-bruken din.

E-post
Hvordan lage profesjonelle rapporter og dokumenter i Microsoft Word

Denne guiden undersøker elementene i en profesjonell rapport og gjennomgår struktureringen, utformingen og ferdigstillelsen av dokumentet ditt i Microsoft Word.

Relaterte temaer
  • Uspesifisert
Om forfatteren
Matt Dizak (16 artikler publisert)Mer fra Matt Dizak

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Ett steg til…!

Bekreft e-postadressen din i e-posten vi nettopp sendte deg.

.