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 kuin
DATETIMEmuttaTIMESTAMPsisä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ö:

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ö:

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ö:

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 |
|---|---|---|
| 4120 | Harjoitella | 1996-09-26 16:44:15.581 |
Kysely:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Lähtö:
| Nimi | Syntymäpäivä |
|---|---|
| Harjoitella | 26.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ä |
|---|---|
| Harjoitella | 26 |
Poimivan kyselyn vuosi:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Lähtö:
| Nimi | Syntymävuosi |
|---|---|
| Harjoitella | 1996 |
Kysely sekuntien poimimiseen:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Lähtö:
| Nimi | SyntymäSecond |
|---|---|
| Harjoitella | 581 |
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 |
|---|---|---|
| 4120 | Harjoitella | 1996-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 |
|---|---|
| Harjoitella | 1997-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 |
|---|---|
| Harjoitella | 1996-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 |
|---|---|
| Harjoitella | 1996-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ä.