logo

MySQL:n päivämäärä- ja aikafunktiot

Käsittely päivämäärä ja aika MySQL:n tiedot ovat välttämättömiä monille tietokantatoiminnoille, varsinkin kun on kyse aikaleimojen ajastustehtävien käsittelystä tai aikaperusteisten tehtävien luomisesta. MySQL tarjoaa erilaisia ​​päivämäärä- ja aikatoimintoja, jotka auttavat käyttäjiä työskentelemään päivämääräarvojen kanssa suorittamaan laskelmia ja muotoilemaan niitä tarpeen mukaan.

Näiden toimintojen avulla kehittäjät voivat suorittaa laskelmia poimia päivämäärän tiettyjä osia tai jopa muotoilla tulosteen luettavuuden parantamiseksi. Tässä artikkelissa tutkimme yleisimmin käytettyjä MySQL-päivämääräfunktioita, selitämme niiden syntaksin, annamme esimerkkejä ja opastamme sinua käyttämään niitä tehokkaasti.

MySQL:n päivämäärä- ja aikatietotyyppien ymmärtäminen

Päivämäärien käsittely MySQL:ssä voi olla hankalaa aloittelijoille varsinkin siksi, että tietokannan päivämäärän muodon on vastattava syötettävien tietojen muotoa lisäyksen aikana. Monissa tapauksissa pelkän päivämäärän sijaan saatamme joutua tallentamaan sekä päivämäärän että kellonajan käyttötavasta riippuen. Tässä on DATETIME ja TIMESTAMP tietotyypit tulevat peliin.



MySQL tarjoaa seuraavat tietotyypit päivämäärä- ja aika-arvojen tallentamiseen:

1. PÄIVÄMÄÄRÄ :

  • Muoto :YYYY-MM-DD
  • Käytetään vain päivämäärän (vuosi kuukausi ja päivä) tallentamiseen ilman aikakomponenttia.

2. DATETIME :

  • Muoto :YYYY-MM-DD HH:MM:SS
  • Tallentaa sekä päivämäärän että kellonajan, mikä tekee siitä hyödyllisen, kun haluat tallentaa tiettyjä aikoja päivämäärän kanssa.

3. AIKALEIMA :

  • Muoto :YYYY-MM-DD HH:MM:SS
  • Samanlainen kuinDATETIMEmuttaTIMESTAMPsisältää myös aikavyöhykkeen tuen. Se päivittyy automaattisesti nykyiseen aikaleimaan, kun tietuetta muutetaan, joten se on ihanteellinen tietueiden muutosten seuraamiseen ajan mittaan.

4. VUOSI :

  • Muoto :YYYYtaiYY
  • Käytetään vain vuoden tallentamiseen, mikä voi olla hyödyllistä sovelluksissa, joissa tarvitaan vain vuosi, kuten syntymävuosien tai tilikausien seuranta.

MySQL:n päivämäärä- ja aikafunktiot

Sukellaanpa nyt MySQL:n päivämääräfunktioihin, joiden avulla voit käsitellä ja kysellä päivämäärä- ja aikatietoja tehokkaasti.

verrata merkkijonoon

1. NYT()- Hanki nykyinen päivämäärä ja aika

The NYT() toiminto hakee nykyisen päivämäärän ja kellonajan VVVV-KK-PP HH:MI:SS muoto.

Kysely:

SELECT NOW();  

Lähtö:

nyt menetelmän tulostuskuva' title=

2. CURDATE() - Hae vain nykyinen päivämäärä

Jos tarvitsemme vain nykyisen päivämäärän ilman käytettävää aikaosaa CURDATE() joka palauttaa päivämäärän YYYY-MM-DD muoto.

Kysely:

SELECT CURDATE();  

Lähtö: 

ULOSTULO2' loading='lazy' title=

3. CURTIME() - Hae vain nykyinen aika

CURTIME()-funktio palauttaa nykyisen ajan HH:MI:SS muodossa päivämäärää lukuun ottamatta.

Kysely:

SELECT CURTIME();  

Lähtö: 

TULO 3' loading='lazy' title=

4. DATE() - Pura päivämääräosa DATETIME-arvosta

TheDATE()funktio poimii vain päivämääräosan a:staDATETIMEtaiTIMESTAMParvo hylkää aikaa.

Esimerkki: Pöydään nimeltä users :

Id Nimi Syntymäaika
4120Harjoitella1996-09-26 16:44:15.581

Kysely:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Lähtö:

Nimi Syntymäpäivä
Harjoitella26.9.1996

5. EXTRACT() - Pura tietyn päivämäärän osat

EXTRACT()käytetään poimimaan tiettyjä osia päivämäärästä, kuten päivä, kuukausi tai vuosi. Tämä toiminto voi olla erityisen hyödyllinen analysoitaessa tai vertailtaessa päivämäärän eri osia. Useita yksiköitä voidaan harkita, mutta vain joitain käytetään, kuten MIKROSEKUNTI TOINEN MINUUTTTI TUNTIA PÄIVÄ VIIKKO KUUKAUSI NELJÄNNES VUOSI jne. Ja päivämäärä on kelvollinen päivämääräilmaus.

mikä on myspace

Syntaksi:

OTE(yksikkö FROM päivämäärä);

Kyselyn purkupäivä:

SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

Lähtö: 

Nimi Syntymäpäivä
Harjoitella26

Poimivan kyselyn vuosi:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

Lähtö: 

Nimi Syntymävuosi
Harjoitella1996

Kysely sekuntien poimimiseen:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

Lähtö:

Nimi SyntymäSecond
Harjoitella581

6. DATE_ADD() - Lisää aikavälit päivämäärään

The DATE_ADD() -toiminnolla voit lisätä aikavälejä (esim. päiviä kuukausia vuosia) päivämäärään taiDATETIMEarvo.

Syntaksi:

PÄIVÄMÄÄRÄ_LISÄ(päivämäärä INTERVAL-lauseen tyyppi);

Esimerkki: Alla olevalle taulukolle " Testata '

Id Nimi Syntymäaika
4120Harjoitella1996-09-26 16:44:15.581

Kysely Lisää 1 vuosi päivämäärään

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

Lähtö:

Nimi SyntymäaikaMuutettu
Harjoitella1997-09-26 16:44:15.581

Kysely lisätäksesi päivämäärään 30 päivää

postimyynnin läpikulku
SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Lähtö:

Nimi SyntymäpäiväModified
Harjoitella1996-10-26 16:44:15.581

Kysy 4 tunnin lisäämiseksi päivämäärään

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

Lähtö: 

Nimi SyntymäSecond
Harjoitella1996-10-26 20:44:15.581

7. DATEDIFF() - Löydä ero kahden päivämäärän välillä

Tämä toiminto palauttaa kahden päivämäärän välisten päivien määrän. 

Syntaksi:

DATEDIFF(intervalda1 päivämäärä2);

intervalli - minuutti/tunti/kuukausi/vuosi jne

päivämäärä1 & päivämäärä2 - päivämäärä/aika-lauseke

Kysely Löydä ero kahden päivämäärän välillä

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

Lähtö: 

DateDiff

8. DATE_FORMAT() - Muotoile päivämäärä ja aika

DATE_FORMAT() mahdollistaa a DATE DATETIME tai AIKALEIMA arvo mukautettuun muotoon käyttämällä paikkamerkkejä.

java korvaa kaikki merkkijono

Syntaksi:

DATE_FORMAT(päivämäärämuoto);

päivämäärä on kelvollinen päivämäärä ja muoto määrittää päivämäärän/ajan tulostusmuodon. Käytettävissä olevat muodot ovat:

  • %a - Lyhennetty viikonpäivän nimi (su-la)
  • %b - lyhennetty kuukauden nimi (tammi-joulukuu)
  • %c-kuukausi numeerinen (0-12)
  • %D-kuukauden päivä englanninkielisellä jälkiliitteellä (0. 1. 2. 3.)
  • %d - kuukauden numeerinen päivä (00-31)
  • %e-kuukauden päivä numeerinen (0-31)
  • %f-mikrosekuntia (000000-999999)
  • %H-tunti (00-23)
  • %h-Hour (01-12)
  • %I-tunti (01-12)
  • %i-minuuttia numeerinen (00-59)
  • %j-vuoden päivä (001-366)
  • %k-tuntia (0-23)
  • %l-tuntia (1-12)
  • %M-kuukauden nimi (tammi-joulukuu)
  • %m-kuukausi numeerinen (00-12)
  • %p-AM tai PM
  • %r-aika 12 tuntia (tt:mm: ss ja sen jälkeen AM tai PM)
  • %S-sekuntia (00-59)
  • %s-sekuntia (00-59)
  • % T-aika 24 tuntia (tt:mm: ss)
  • %U-viikko (00-53), jossa sunnuntai on viikon ensimmäinen päivä
  • %u-viikko (00-53), jossa maanantai on viikon ensimmäinen päivä
  • %V-viikko (01-53), jossa sunnuntai on viikon ensimmäinen päivä, jota käytetään %X:n kanssa
  • %v-Week (01-53), jossa maanantai on viikon ensimmäinen päivä, jota käytetään %x:n kanssa
  • %W-viikonpäivän nimi (sunnuntai-lauantai)
  • %w-viikonpäivä (0 = sunnuntai 6 = lauantai)
  • %X-vuosi viikolle, jossa sunnuntai on viikon ensimmäinen päivä, neljä numeroa, joita käytetään %V:n kanssa
  • %x-Vuosi viikolle, jossa maanantai on viikon ensimmäinen päivä neljää numeroa käytetään %v:n kanssa
  • %Y-vuoden numeerinen neljä numeroa
  • %y-Year numeerinen kaksinumeroinen numero

Pyydä muotoilemaan päivämäärä

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

Lähtö:

Muotoiltu_päivämäärä
Torstai 10.4.2025

Parhaat käytännöt päivämäärän ja ajan kanssa työskentelemiseen MySQL:ssä

1. Käytä aina oikeita päivämäärämuotoja

Kun lisäät tai päivität päivämääriä, varmista, että noudatat MySQL:n odotettuja muotoja (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Tämä varmistaa, että kyselysi palauttavat odotetut tulokset ilman virheitä.

2. Aikavyöhyke huomioon ottaen TIMESTAMP

VaikkaDATETIMEei tallenna aikavyöhyketietojaTIMESTAMPei. Jos sovelluksesi on aikavyöhykeherkkä (esimerkiksi kansainvälisissä sovelluksissa), harkitse sen käyttöäTIMESTAMPpäivämäärä-aika-kentille, joissa on otettava huomioon eri aikavyöhykkeet.

3. Ajanjaksojen käsittely kyselyissä

Varmista, että käytät oikeita päivämäärävertailuja ajanjaksoihin perustuvien tietojen suodattamiseksi (esim. kaikkien tietueiden hakemiseen tietystä kuukaudesta tai vuodesta).WHERElauseke. Esimerkki:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Suorituskykynäkökohdat

Kun työskentelet päivämäärä- ja aikafunktioiden kanssa erityisesti suurissa tietojoukoissa, ota huomioon vaikutus suorituskykyyn. Vältä käyttämästä toimintoja, kutenNOW()taiCURDATE()inWHERElauseke, koska ne voivat hidastaa kyselyitä käsiteltäessä suuria taulukoita.

Johtopäätös

MySQL:n päivämäärä- ja aikafunktiot ovat välttämättömiä työkaluja käsittelyä ja manipuloimalla ajallisia tietoja tietokantojesi sisällä. Hallitsemalla toimintoja, kutenNOW() CURDATE() DATE_ADD() DATEDIFF()jaDATE_FORMAT()kanssa voit helposti työskennellä aikaperusteiset laskelmat vertailuja ja muotoja . Avain näiden toimintojen tehokkaaseen käyttöön on ymmärtää niiden syntaksi, milloin ja miten niitä käytetään, sekä niiden tehokkuusvaikutukset suurissa tietojoukoissa. Tämän tiedon avulla pystyt rakentamaan tehokkaampia tarkkoja ja skaalautuvia kyselyitä kaikkiin päivämäärään ja aikaan liittyviin tarpeisiisi MySQL:ssä.

Luo tietokilpailu