Kuinka työskennellä tehokkaasti päivämäärien ja aikojen kanssa MySQL: ssä

Kuinka työskennellä tehokkaasti päivämäärien ja aikojen kanssa MySQL: ssä

Päivämäärät ja ajat ovat tärkeitä, ne auttavat pitämään asiat järjestyksessä ja ovat olennainen osa mitä tahansa ohjelmistotoimintaa.





Tehokas työskentely heidän kanssaan tietokannassa voi joskus tuntua hämmentävältä, toimiiko se eri aikavyöhykkeillä, päivämäärien lisääminen / vähentäminen ja muut toiminnot.





Tutustu käytettävissä oleviin MySQL -toimintoihin, joilla voit helposti käsitellä ja hallita päivämääriä / aikoja tietokannassasi.





Työskentely aikavyöhykkeiden kanssa

Jotta asiat pysyisivät vakioina, sinun tulee työskennellä vain UTC -aikavyöhykkeen päivämäärien / aikojen kanssa. Aina kun muodostat yhteyden MySQL -tietokantaan, sinun on vaihdettava aikavyöhyke UTC: ksi, mikä voidaan tehdä seuraavan SQL -käskyn avulla:

SET TIME_ZONE = '+0:00'

Koska kaikki päivämäärät tallennetaan nyt UTC -aikaan, tiedät aina, mitä työskentelet, mikä tekee asioista yksinkertaisempia ja yksinkertaisempia.



kuinka löytää ip -osoite tulostimesta

Tarvittaessa voit helposti muuntaa aikavyöhykkeen mikä tahansa päivämäärän / aikaleiman arvo kätevästi CONVERT_TZ () MySQL -toiminto. Sinun on ensin tiedettävä poikkeama, esimerkiksi Pohjois -Amerikan länsirannikolla PST on UTC -08: 00, joten voit käyttää:

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

Tämä johtaa 2021-02-04 13:47:23 joka on aivan oikein. Kolme väitettä välitettiin CONVERT_TZ () ovat ensin päivämäärä / aikaleima, jolla aloitat (käytä nyt () nykyiselle ajalle), toinen on aina '+0: 00' koska kaikki päivämäärät pakotetaan UTC: ksi tietokannassa ja viimeinen on siirtymä, jonka haluamme muuttaa päivämääräksi.





Lisää / vähennä päivämääriä

Monta kertaa sinun on lisättävä tai vähennettävä päivämääriä, esimerkiksi jos haluat hakea viikon aikaisia ​​tietueita tai ajoittaa jotain kuukauden kuluttua.

Onneksi MySQL: llä on erinomainen DATE_ADD () ja DATE_SUB () toiminnot tekevät tästä tehtävästä erittäin helpon. Voit esimerkiksi vähentää kaksi viikkoa nykyisestä päivämäärästä SQL -lausekkeella:





SELECT DATE_SUB(now(), interval 2 week);

Jos haluat sen sijaan lisätä kolme päivää olemassa olevaan aikaleimaan, käytä seuraavaa:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Molemmat toiminnot toimivat samalla tavalla, ensimmäinen argumentti on aikaleima, jolla aloitat, ja toinen argumentti on väli, joka lisätään tai vähennetään. Toinen argumentti muotoillaan aina samalla tavalla sanasta alkaen väli jota seuraa numeroarvo ja itse väli, joka voi olla jokin seuraavista: sekunti, minuutti, tunti, päivä, viikko, kuukausi, vuosineljännes, vuosi.

Jos haluat esimerkiksi hakea kaikki viimeisten 34 minuutin aikana tehdyt kirjautumiset, voit käyttää SQL -käskyä, kuten:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Kuten näette, tämä noutaisi kaikki tietueet kirjautumiset taulukko, jossa kirjautumispäivä on suurempi kuin nykyinen aika miinus 45 minuuttia tai toisin sanoen viimeiset 45 minuuttia.

Hanki ero päivämäärien välillä

Joskus sinun on saatava kuinka paljon aikaa on kulunut kahden päivämäärän välillä. Voit helposti saada päivien lukumäärän kahden eri päivämäärän välillä DATEDIFF funktio, kuten alla oleva SQL -lause:

SELECT DATEDIFF(now(), '2020-12-15');

The DATEDIFF funktio ottaa kaksi argumenttia, jotka molemmat ovat päivämäärä / aikaleimoja ja antaa niiden välisten päivien määrän. Yllä oleva esimerkki näyttää 15. joulukuuta 2020 - tähän päivään kuluneiden päivien määrän.

Jos haluat saada sekuntimäärän kahden päivämäärän välillä, TO_SECONDS () toiminto voi olla hyödyllinen, esimerkiksi:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

Tämä johtaa kahden annetun päivämäärän väliseen sekuntimäärään.

Pura segmentit päivämääristä

On olemassa useita MySQL -toimintoja, joiden avulla voit helposti poimia tiettyjä segmenttejä päivämääristä, kuten jos haluat vain kuukauden, vuoden päivän tai tunnin. Tässä muutamia esimerkkejä tällaisista toiminnoista:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Yllä olevat SQL -käskyt johtavat 02 , nykyinen tunti ja 196 15. syyskuuta on vuoden 196 päivä. Tässä on luettelo kaikista käytettävissä olevista päivämäärän poimintatoiminnoista, joissa kussakin on vain yksi argumentti ja päivämäärä poimitaan seuraavasta:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Jos esimerkiksi haluat ehkä hakea vain kuukauden ja vuoden, jolloin kaikki käyttäjät luotiin, voit käyttää SQL -lauseketta, kuten:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

Tämä noutaisi kaikki tietueet käyttäjille taulukko ja näytä tunnus#, kuukausi ja vuosi, jolloin jokainen käyttäjä luotiin.

Tietueiden ryhmittely päivämääräjakson mukaan

Yksi erinomainen päivämäärätoimintojen käyttö on mahdollisuus ryhmitellä tietueet päivämääräjakson mukaan RYHMÄ SQL -käskyjen sisällä. Esimerkiksi haluat ehkä vetää vuoden 2020 kaikkien tilausten kokonaismäärän kuukausittain. Voit käyttää SQL -lauseketta, kuten:

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

Tämä noutaisi kaikki vuonna 2020 tehdyt tilaukset, ryhmittäisi ne luontikuukauden mukaan ja palauttaisi 12 tietuetta, jotka näyttävät jokaisen kuukauden kuukausitilauksen kokonaismäärän.

Huomaa, että indeksin suorituskyvyn parantamiseksi on aina parasta välttää päivämäärätoimintojen, kuten VUOSI () SQL -lausekkeiden WHERE -lausekkeen sisällä ja käytä sen sijaan VÄLILLÄ yllä olevassa esimerkissä.

Älä koskaan sekoita päivämääriä uudelleen

Yllä olevan tiedon avulla voit nyt työskennellä tehokkaasti, kääntää ja suorittaa toimintoja päivämäärinä ja aikoina monenlaisissa käyttötapauksissa.

Muista aina käyttää UTC: tä työskennellessäsi päivämäärien kanssa yksinkertaisuuden vuoksi ja käytä yllä olevia vinkkejä hallitaksesi päivämääriä tehokkaasti ohjelmistossasi, olipa kyse sitten yksinkertaisten laskelmien suorittamisesta tai raporttien keräämisestä helposti päivämääräkausien mukaan.

Jos olet hieman uusi SQL: ssä, tarkista nämä olennaiset SQL -komennot auttaa parantamaan SQL -käyttöäsi.

Jaa Jaa Tweet Sähköposti Ammattimaisten raporttien ja asiakirjojen luominen Microsoft Wordissa

Tässä oppaassa tarkastellaan ammattimaisen raportin elementtejä ja tarkastellaan asiakirjasi jäsentämistä, muotoilua ja viimeistelyä Microsoft Wordissa.

Lue seuraava
Liittyvät aiheet Kirjailijasta Matt Dizak(18 artikkelia julkaistu) Lisää Matt Dizakilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi