Datoer og tidspunkter er vigtige, de hjælper med at holde tingene organiseret og er et integreret aspekt af enhver softwarefunktion.
Effektivt at arbejde med dem i databasen kan undertiden virke forvirrende, hvad enten det er at arbejde på tværs af de forskellige tidszoner, tilføje / fratrække datoer og andre operationer.
Lær de forskellige tilgængelige MySQL-funktioner, så du nemt kan håndtere og administrere datoer / tidspunkter i din database.
Arbejde med tidszoner
For at hjælpe med at holde tingene standardiserede, skal du kun arbejde med datoer / tidspunkter i UTC-tidszone. Hver gang du opretter en forbindelse til MySQL-databasen, skal du skifte tidszone til UTC, hvilket kan gøres med følgende SQL-sætning:
SET TIME_ZONE = '+0: 00'
Da alle datoer nu gemmes i UTC, ved du altid, hvad du arbejder med, hvilket gør tingene mere enkle og ligetil.
Når det er nødvendigt, kan du nemt konvertere tidszonen af enhver datetime / tidsstempelværdi med det praktiske CONVERT_TZ () MySQL-funktion. Du skal først kende forskydningen, for eksempel er PST på Nordamerikas vestkyst UTC -08: 00, så du kan bruge:
PolyTime, en ny app fra MakeUseOf, gør det nemt at sammenligne tidszoner over hele verden. Her er hvad du kan gøre med det, og hvordan det fungerer.
VÆLG CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');
Dette resulterer i 2021-02-04 13:47:23 hvilket er nøjagtigt korrekt. De tre argumenter overført til CONVERT_TZ () er først det tidspunkt / tidsstempel, du starter med (brug nu () til aktuel tid), det andet vil altid være '+0:00' da alle datoer er tvunget til UTC i databasen, og den sidste er den offset, vi ønsker at konvertere datoen til.
Tilføj / træk datoer
Mange gange skal du tilføje til eller trække fra datoer, f.eks. Hvis du har brug for at hente poster fra for en uge siden, eller planlægge noget en måned fra nu.
Heldigvis har MySQL det fremragende DATE_ADD () og DATE_SUB () funktioner gør denne opgave ekstremt let. For eksempel kan du trække to uger fra den aktuelle dato med SQL-sætningen:
VÆLG DATE_SUB (nu (), interval 2 uger);
Hvis du i stedet ville føje tre dage til et eksisterende tidsstempel, ville du bruge:
VÆLG DATE_ADD ('2021-02-07 11:52:06', interval 3 dag);
Begge funktioner fungerer ens, det første argument er det tidsstempel, du starter med, og det andet argument er intervallet, der skal tilføjes eller trækkes fra. Det andet argument er altid formateret det samme startende med ordet interval efterfulgt af en numerisk værdi og selve intervallet, som kan være et af følgende: sekund, minut, time, dag, uge, måned, kvartal, år.
For et andet eksempel, hvis du vil hente alle logins, der opstod i de sidste 34 minutter, kan du bruge en SQL-sætning som:
VÆLG * FRA logins HVOR login_date> = DATE_SUB (nu (), interval 45 minutter);
Som du kan se, ville dette hente alle poster fra logins tabel med en logindato, der er større end det aktuelle tidspunkt minus 45 minutter, eller med andre ord de sidste 45 minutter.
Få forskellen mellem datoer
Nogle gange skal du finde ud af, hvor lang tid der er gået mellem to datoer. Du kan nemt få antallet af dage mellem to forskellige datoer med DATEDIFF funktion, såsom nedenstående SQL-sætning:
VÆLG DATEDIFF (nu (), '2020-12-15');
Det DATEDIFF funktionen tager to argumenter, som begge er dato- / tidsstempler og angiver antallet af dage mellem dem. Ovenstående eksempel viser antallet af forløbne dage fra 15. december 2020 indtil i dag.
For at få antallet af sekunder mellem to datoer skal TO_SECONDS () funktion kan være praktisk, for eksempel:
VÆLG TO_SECONDS (nu ()) - TO_SECONDS ('2021-02-05 11:56:41');
Dette vil resultere i antallet af sekunder mellem de to angivne datoer.
Uddrag segmenter fra datoer
Der er forskellige MySQL-funktioner, der giver dig mulighed for nemt at udtrække specifikke segmenter fra datoer, f.eks. Hvis du kun ville have måneden, dagen på året eller timen. Her er et par eksempler på sådanne funktioner:
VÆLG MÅNED ('2021-02-11 15:27:52');
VÆLG TIM (nu ());
VÆLG DAGOFYEAR ('2021-07-15 12:00:00');
Ovenstående SQL-sætninger ville resultere i 02, den aktuelle time og 196 da 15. september er den 196. dag i året. Her er en liste over alle tilgængelige datoudvindingsfunktioner, hver kun tager et argument, hvor datoen udvindes fra:
- SEKUND()
- MINUT ()
- TIME()
- DAG ()
- UGE () - Nummer 0 - 52, der definerer ugen inden for året.
- MÅNED ()
- KVARTAL () - Nummer 1-4, der definerer årets kvartal.
- ÅR ()
- DAYOFYEAR () - Årets dag (f.eks. 15. september = 196).
- LAST_DAY () - Den sidste dag i den givne måned.
- DATO () - Datoen i ÅÅÅÅ-MM-DD-format uden klokkeslæt.
- TID () Klokken i HH: II: SS-format uden dato.
- TO_DAYS () - Antallet af dage siden A.D. 0.
- TO_SECONDS () - Antallet af sekunder siden A.D. 0.
- UNIX_TIMESTAMP () - Antallet af sekunder siden epoken (1. januar 1970)
For eksempel, hvis du måske kun ønskede at hente den måned og det år, som alle brugere blev oprettet, kan du bruge en SQL-sætning såsom:
SELECT id, MONTH (created_at), YEAR (created_at) FROM users;
Dette ville hente alle poster inden for brugere tabel og vise id #, måned og år, som hver bruger blev oprettet i.
Gruppering af poster efter datoperiode
Én fremragende anvendelse af datofunktioner er muligheden for at gruppere poster efter dato periode ved hjælp af GROUP BY inden for dine SQL-udsagn. For eksempel, måske ønsker du at trække det samlede beløb for alle ordrer i 2020 grupperet efter måned. Du kan bruge en SQL-sætning som:
SELECT MONTH (created_at), SUM (amount) FRA ordrer WHERE created_at MELLEM '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH (created_at);
Dette vil hente alle ordrer placeret i år 2020, gruppere dem efter den måned, de blev oprettet, og returnere 12 poster, der viser det samlede beløb, der er bestilt hver måned i året.
Bemærk, for bedre indeksydelse er det altid bedst at undgå at bruge datofunktioner som f.eks ÅR() inden for WHERE-klausulen om SQL-sætninger, og brug i stedet MELLEM som vist i ovenstående eksempel.
Bliv aldrig forvirret med datoer igen
Ved hjælp af ovenstående viden kan du nu effektivt arbejde med, oversætte og udføre operationer i datoer og tidspunkter i en lang række brugssager.
Husk altid at bruge UTC, når du arbejder med datoer for at gøre det nemmere, og brug ovenstående tip til effektiv styring datoer i din software, hvad enten det er for at gennemføre enkle beregninger eller let trække rapporter grupperet efter dato perioder.
Hvis du er noget nyt for SQL, skal du sørge for at tjekke disse ud vigtige SQL-kommandoer for at hjælpe med at forbedre din SQL-brug.
Denne vejledning undersøger elementerne i en professionel rapport og gennemgår struktureringen, stylingen og færdiggørelsen af dit dokument i Microsoft Word.
- Uspecificeret
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.