MySQL datos ir laiko funkcijos
Tvarkymas data ir laikas duomenys MySQL yra būtini daugeliui duomenų bazės operacijų, ypač kai reikia tvarkyti laiko žymes, planuoti užduotis arba generuoti pagal laiką. „MySQL“ teikia įvairias datos ir laiko funkcijas, kurios padeda vartotojams dirbti su datos reikšmėmis atlikti skaičiavimus ir pagal poreikį jas formatuoti.
Šios funkcijos leidžia kūrėjams atlikti skaičiavimus, išgauti konkrečias datos dalis arba net suformatuoti išvestį, kad būtų geriau skaitoma. Šiame straipsnyje išnagrinėsime dažniausiai naudojamas MySQL datos funkcijas, paaiškinsime jų sintaksę, pateiksime pavyzdžių ir paaiškinsime, kaip jas efektyviai naudoti.
MySQL datos ir laiko duomenų tipų supratimas
Darbas su datomis MySQL gali būti sudėtingas pradedantiesiems, ypač todėl, kad datos formatas duomenų bazėje turi atitikti įvesties duomenų formatą įterpiant. Daugeliu atvejų, užuot naudoję paprastą datą, gali tekti išsaugoti ir datą, ir laiką, atsižvelgiant į naudojimo atvejį. Čia yra DATETIME ir TIMESTAMP pradeda veikti duomenų tipai.
MySQL pateikia šiuos duomenų tipus datos ir laiko reikšmėms saugoti:
1. DATA :
- Formatas :
YYYY-MM-DD - Naudojamas tik datai (metai mėnuo ir diena) saugoti be jokio laiko komponento.
2. DATETIME :
- Formatas :
YYYY-MM-DD HH:MM:SS - Išsaugo ir datą, ir laiką, todėl tai naudinga, kai reikia užfiksuoti konkretų laiką kartu su data.
3. TIMESTAMP :
- Formatas :
YYYY-MM-DD HH:MM:SS - Panašus į
DATETIMEbetTIMESTAMPtaip pat apima laiko juostos palaikymą. Jis automatiškai atnaujinamas iki dabartinės laiko žymos, kai įrašas pakeičiamas, todėl puikiai tinka stebėti įrašų pokyčius laikui bėgant.
4. METAI :
- Formatas :
YYYYarbaYY - Naudojamas tik metams saugoti, o tai gali būti naudinga programoms, kuriose reikalingi tik metai, pvz., gimimo ar fiskalinių metų stebėjimas.
MySQL datos ir laiko funkcijos
Dabar pasinerkime į MySQL datos funkcijas, kurias galite naudoti norėdami veiksmingai valdyti datos ir laiko duomenis ir pateikti jų užklausas.
1. DABAR () – gauti dabartinę datą ir laiką
The DABAR () funkcija nuskaito dabartinę datą ir laiką YYYY-MM-DD HH:MI:SS formatu.
Užklausa:
SELECT NOW();
Išvestis:
![]()
2. CURDATE() – gauti tik dabartinę datą
Jei mums reikia tik dabartinės datos be laiko dalies, kurią galime naudoti
CURDATE()kuri grąžina datąYYYY-MM-DDformatu.Užklausa:
SELECT CURDATE();
Išvestis:
![]()
3. CURTIME() – gauti tik dabartinį laiką
Funkcija CURTIME() grąžina esamą laiką HH:MI:SS formatu, neįskaitant datos.
Užklausa:
SELECT CURTIME();
Išvestis:
![]()
4. DATE() – ištraukite datos dalį iš DATETIME reikšmės
The
DATE()funkcija iš a ištraukia tik datos dalįDATETIMEarbaTIMESTAMPvertė atmetus laiką.Pavyzdys: Dėl stalo, vadinamo
users:
| Id | Vardas | Gimimo laikas |
|---|---|---|
| 4120 | Praktika | 1996-09-26 16:44:15.581 |
Užklausa:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Išvestis:
| Vardas | Gimimo data |
|---|---|
| Praktika | 1996-09-26 |
5. EXTRACT() – Ištraukite konkrečios datos dalis
EXTRACT() naudojamas tam tikroms datos dalims, pvz., dienai mėnesiui ar metams, išgauti. Ši funkcija gali būti ypač naudinga analizuojant arba lyginant skirtingas datos dalis. Galima apsvarstyti keletą vienetų, tačiau naudojami tik kai kurie, pvz MIKROSEKUNDĖ ANTRA MINUTĖ VALANDA DIENA Savaitė MĖNESIS KETVIRTIS METAI ir kt. O „data“ yra tinkama datos išraiška.
Sintaksė:
IŠRAŠAS (vienetas NUO datos);
Užklausos ištraukimo diena:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
Išvestis:
| Vardas | Gimtadienis |
|---|---|
| Praktika | 26 |
Užklausos ištraukimo metai:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Išvestis:
| Vardas | Gimimo metai |
|---|---|
| Praktika | 1996 m |
Užklausa sekundėms išgauti:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Išvestis:
| Vardas | GimimasAntras |
|---|---|
| Praktika | 581 |
6. DATE_ADD() – pridėti intervalus prie datos
The DATE_ADD() funkcija leidžia prie datos pridėti laiko intervalus (pvz., dienas, mėnesius, metus). DATETIME vertė.
Sintaksė:
DATE_ADD(datos INTERVAL galiojimo tipas);
Pavyzdys: Žemiau esančioje lentelėje pavadinimu „ Testas '
| Id | Vardas | Gimimo laikas |
|---|---|---|
| 4120 | Praktika | 1996-09-26 16:44:15.581 |
Užklausa į Pridėkite 1 metus prie datos
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Išvestis:
| Vardas | Modifikuotas gimimo laikas |
|---|---|
| Praktika | 1997-09-26 16:44:15.581 |
Užklausa pridėti 30 dienų prie datos
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Išvestis:
| Vardas | BirthDayModified |
|---|---|
| Praktika | 1996-10-26 16:44:15.581 |
Užklausa, jei norite pridėti 4 valandas prie datos
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
Išvestis:
| Vardas | GimimasAntras |
|---|---|
| Praktika | 1996-10-26 20:44:15.581 |
7. DATEDIFF() - Raskite skirtumą tarp dviejų datų
Ši funkcija grąžina dienų skaičių tarp dviejų datų.
Sintaksė:
DATEDIFF(intervaldate1 data2);
intervalas - minutė / valanda / mėnuo / metai ir tt
date1 & date2 – datos/laiko išraiška
Užklausa į Raskite skirtumą tarp dviejų datų
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Išvestis:
| DateDiff |
|---|
8. DATE_FORMAT() – formatavimo data ir laikas
DATE_FORMAT() leidžia formatuoti a DATA DATETIME arba TIMESTAMP vertę į tinkintą formatą, naudojant vietos rezervavimo ženklus.
Sintaksė:
DATE_FORMAT(datos formatas);
data yra tinkama data, o formatas nurodo datos / laiko išvesties formatą. Galima naudoti šiuos formatus:
- %a – sutrumpintas savaitės dienos pavadinimas (sekmadienis–šeštadienis)
- %b – sutrumpintas mėnesio pavadinimas (sausis–gruodis)
- %c – skaitinis mėnuo (0–12)
- %D – mėnesio diena su angliška priesaga (0, 1, 2, 3)
- %d – skaitinė mėnesio diena (00–31)
- %e-mėnesio diena (0–31)
- %f-mikrosekundės (000000-999999)
- %h-valanda (00-23)
- %h-valanda (01-12)
- %I valanda (01-12)
- %i minučių skaitiniai (00-59)
- %j – metų diena (001-366)
- %k valandos (0-23)
- %l val. (1-12)
- %M mėnesio pavadinimas (sausis–gruodis)
- %m mėnuo skaitinis (00-12)
- %p-AM arba PM
- %r – laikas 12 valandų (hh:mm: ss, po to AM arba PM)
- %S sekundės (00-59)
- %s sekundžių (00-59)
- % T laikas 24 valandos (hh:mm: ss)
- %U savaitė (00-53), kur sekmadienis yra pirmoji savaitės diena
- %u-Savaitė (00–53), kai pirmadienis yra pirmoji savaitės diena
- %V-Savaitė (01-53), kur sekmadienis yra pirmoji savaitės diena, naudojama su %X
- %v-Savaitė (01-53), kur pirmadienis yra pirmoji savaitės diena, naudojama kartu su %x
- %W – savaitės dienos pavadinimas (sekmadienis–šeštadienis)
- %w – savaitės diena (0 = sekmadienis 6 = šeštadienis)
- %X metai savaitei, kai sekmadienis yra pirmoji savaitės diena, keturi skaitmenys, naudojami su %V
- %x-Metai savaitei, kai pirmadienis yra pirmoji savaitės diena, keturi skaitmenys naudojami su %v
- % Y-metų keturių skaitmenų
- %y-Year skaitiniai du skaitmenys
Datos formatavimo užklausa
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Išvestis:
| Formatted_date |
|---|
| 2025 m. balandžio 10 d., ketvirtadienis |
Geriausia darbo su data ir laiku „MySQL“ praktika
1. Visada naudokite tinkamus datos formatus
Įterpdami arba atnaujindami datas įsitikinkite, kad laikotės laukiamų MySQL formatų ( YYYY-MM-DD YYYY-MM-DD HH:MI:SS ). Tai užtikrina, kad jūsų užklausos pateikia laukiamus rezultatus be klaidų.
2. Laiko juostos svarstymai naudojant TIMESTAMP
Nors DATETIME nesaugo laiko juostos informacijos TIMESTAMP daro. Jei jūsų programa yra jautri laiko juostai (pvz., tarptautinėse programose), apsvarstykite galimybę naudoti TIMESTAMP datos ir laiko laukams, kuriuose reikia atsižvelgti į skirtingas laiko juostas.
3. Datų intervalų tvarkymas užklausose
Norėdami filtruoti duomenis pagal dienų sekas (pvz., gauti visus įrašus iš konkretaus mėnesio ar metų), įsitikinkite, kad naudojate tinkamus datų palyginimus WHERE sąlyga. Pavyzdys:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';4. Veiklos svarstymai
Dirbdami su datos ir laiko funkcijomis, ypač dideliuose duomenų rinkiniuose, atkreipkite dėmesį į poveikį našumui. Venkite naudoti tokias funkcijas kaip
NOW()arbaCURDATE()esančiameWHEREsąlygą, nes jos gali sulėtinti užklausas dirbant su didelėmis lentelėmis.Išvada
MySQL datos ir laiko funkcijos yra būtini įrankiai tvarkymas ir manipuliuojant laikinus duomenis savo duomenų bazėse. Įvaldydami tokias funkcijas kaip
Sukurti viktorinąNOW()CURDATE()DATE_ADD()DATEDIFF()irDATE_FORMAT()galite lengvai dirbti laiku pagrįsti skaičiavimai palyginimai ir formatus . Norint efektyviai naudotis šiomis funkcijomis, svarbu suprasti jų sintaksę, kada ir kaip jas naudoti, ir jų poveikį dideliuose duomenų rinkiniuose. Turėdami šias žinias galėsite kurti efektyvesnes tikslias ir keičiamo dydžio užklausas, atitinkančias visus su data ir laiku susijusius MySQL poreikius.