Datum och tider är viktiga, de hjälper till att hålla saker organiserade och är en integrerad aspekt av alla programvaruoperationer.

Att effektivt arbeta med dem i databasen kan ibland verka förvirrande, oavsett om det fungerar över olika tidszoner, att lägga till / subtrahera datum och andra operationer.

Lär dig de olika tillgängliga MySQL-funktionerna för att enkelt hantera och hantera datum / tider i din databas.

Arbeta med tidszoner

För att hålla sakerna standardiserade bör du bara arbeta med datum / tider i UTC-tidszonen. Varje gång du upprättar en anslutning till MySQL-databasen bör du byta tidszon till UTC, vilket kan göras med följande SQL-uttalande:

SET TIME_ZONE = '+0: 00'

Eftersom alla datum nu kommer att sparas i UTC, vet du alltid vad du jobbar med, vilket gör sakerna enklare och rakt framåt.

Vid behov kan du enkelt konvertera tidszonen valfritt datum / tidsstämpelvärde med det praktiska CONVERT_TZ () MySQL-funktion. Du måste veta förskjutningen först, till exempel är PST på Nordamerikas västkust UTC -08: 00, så du kan använda:

instagram viewer
PolyTime är den bästa konverteringsappen för tidszoner för flera städer samtidigt

PolyTime, en ny app från MakeUseOf, gör det enkelt att jämföra tidszoner över hela världen. Här är vad du kan göra med det och hur det fungerar.

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

Detta resulterar i 2021-02-04 13:47:23 vilket är exakt korrekt. De tre argumenten överfördes till CONVERT_TZ () är först datatiden / tidsstämpeln du börjar med (använd nu () för aktuell tid), den andra kommer alltid att vara '+0:00' eftersom alla datum tvingas att UTC i databasen, och den sista är den förskjutning vi vill konvertera datumet till.

Lägg till / subtrahera datum

Många gånger måste du lägga till eller dra från datum, till exempel om du behöver hämta poster från för en vecka sedan, eller schemalägga något en månad från nu.

Tack och lov har MySQL det utmärkta DATE_ADD () och DATE_SUB () funktioner som gör denna uppgift extremt enkel. Du kan till exempel subtrahera två veckor från det aktuella datumet med SQL-satsen:

VÄLJ DATE_SUB (nu (), intervall 2 veckor);

Om du istället ville lägga till tre dagar i en befintlig tidsstämpel, skulle du använda:

VÄLJ DATE_ADD ('2021-02-07 11:52:06', intervall 3 dag);

Båda funktionerna fungerar på samma sätt, det första argumentet är den tidsstämpel du börjar med, och det andra argumentet är intervallet för att lägga till eller subtrahera. Det andra argumentet är alltid formaterat på samma sätt som börjar med ordet intervall följt av ett numeriskt värde och själva intervallet, vilket kan vara något av följande: sekund, minut, timme, dag, vecka, månad, kvartal, år.

För ett annat exempel, om du vill hämta alla inloggningar som inträffade under de senaste 34 minuterna kan du använda ett SQL-uttalande som:

VÄLJ * FRÅN inloggningar VAR inloggningsdatum> = DATUM_SUB (nu (), intervall 45 minuter);

Som du kan se skulle detta hämta alla poster från inloggningar tabell med ett inloggningsdatum som är större än aktuell tid minus 45 minuter, eller med andra ord de senaste 45 minuterna.

Få skillnad mellan datum

Ibland måste du ta reda på hur mycket tid som har gått mellan två datum. Du kan enkelt få antalet dagar mellan två olika datum med DATERAD funktion, till exempel nedanstående SQL-sats:

VÄLJ DATEDIFF (nu (), '2020-12-15');

De DATERAD funktionen tar två argument, som båda är datum / tidsstämplar och anger antalet dagar mellan dem. Ovanstående exempel visar antalet dagar som gått från 15 december 2020 fram till idag.

För att få antalet sekunder mellan två datum, TO_SECONDS () funktionen kan vara till nytta, till exempel:

VÄLJ TO_SECONDS (nu ()) - TO_SECONDS ('2021-02-05 11:56:41');

Detta kommer att resultera i antalet sekunder mellan de två angivna datumen.

Extrahera segment från datum

Det finns olika MySQL-funktioner som gör att du enkelt kan extrahera specifika segment från datum, som om du bara ville ha månaden, dagen på året eller timmen. Här är några exempel på sådana funktioner:

VÄLJ MÅNAD ('2021-02-11 15:27:52');
VÄLJ TIMME (nu ());
VÄLJ DAYOFYEAR ('2021-07-15 12:00:00');

Ovanstående SQL-uttalanden skulle resultera i 02, den aktuella timmen och 196 eftersom 15 september är den 196: e dagen på året. Här är en lista över alla tillgängliga datumutvinningsfunktioner, var och en tar bara ett argument, datumet extraheras från:

- ANDRA ()
- MINUT ()
- HOUR ()
- DAG ()
- VECKA () - Nummer 0 - 52 som definierar veckan inom året.
- MÅNAD ()
- KVARTAL () - Nummer 1 - 4 som definierar årets kvartal.
- ÅR()
- DAYOFYEAR () - Årets dag (t.ex. 15 september = 196).
- LAST_DAY () - Den sista dagen i den angivna månaden.
- DATUM () - Datumet i ÅÅÅÅ-MM-DD-format utan tid.
- TIME () Tiden i HH: II: SS-format utan datum.
- TO_DAYS () - Antalet dagar sedan A.D. 0.
- TO_SECONDS () - Antalet sekunder sedan A.D. 0.
- UNIX_TIMESTAMP () - Antalet sekunder sedan epoken (1 jan 1970)

Till exempel, om du kanske bara ville hämta den månad och året som alla användare skapades, kan du använda ett SQL-uttalande som:

VÄLJ id, MÅNAD (created_at), YEAR (created_at) FRA användare;

Detta skulle hämta alla poster inom användare tabell och visa id #, månad och år varje användare skapades i.

Gruppera poster efter datumperiod

En utmärkt användning av datumfunktioner är möjligheten att gruppera poster efter datumperiod med GRUPP AV inom dina SQL-uttalanden. Till exempel kanske du vill dra det totala beloppet för alla beställningar 2020 grupperat efter månad. Du kan använda ett SQL-uttalande som:

VÄLJ MÅNAD (skapad_på), SUM (belopp) FRÅN order VAR skapad_MELLAN '2020-01-01 00:00:00' OCH '2020-12-31 23:59:59' GRUPP PÅ MÅNAD (skapad_på);

Detta skulle hämta alla beställningar som gjordes år 2020, gruppera dem efter den månad de skapades och returnera 12 poster som visar det totala beloppet som beställts varje månad på året.

Observera, för bättre indexprestanda är det alltid bäst att undvika att använda datumfunktioner som ÅR() inom WHERE-paragrafen för SQL-uttalanden och istället använda MELLAN som visas i exemplet ovan.

Bli aldrig förvirrad med datum igen

Med hjälp av ovanstående kunskaper kan du nu effektivt arbeta med, översätta och utföra operationer i datum och tider i ett brett spektrum av användningsfall.

Kom ihåg att alltid använda UTC när du arbetar med datum för enkelhet, och använd ovanstående tips för att effektivt hantera datum i din programvara, oavsett om det är för att slutföra enkla beräkningar eller enkelt dra rapporter grupperade efter datum perioder.

Om du är lite ny i SQL, se till att kolla in dessa viktiga SQL-kommandon för att förbättra din SQL-användning.

E-post
Hur man skapar professionella rapporter och dokument i Microsoft Word

Den här guiden undersöker elementen i en professionell rapport och granskar struktureringen, utformningen och slutbehandlingen av ditt dokument i Microsoft Word.

Relaterade ämnen
  • Ospecificerad
Om författaren
Matt Dizak (16 artiklar publicerade)Mer från Matt Dizak

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.