Ravnanje datum in čas podatki v MySQL so bistveni za številne operacije baze podatkov, zlasti ko gre za ravnanje s časovnimi žigi, razporejanje nalog ali ustvarjanje na podlagi časa. MySQL ponuja različne funkcije datuma in časa, ki uporabnikom pomagajo pri delu z datumskimi vrednostmi, izvajajo izračune in jih po potrebi oblikujejo.
Te funkcije omogočajo razvijalcem, da izvajajo izračune, izvlečejo določene dele datuma ali celo oblikujejo izhod za boljšo berljivost. V tem članku bomo raziskali najpogosteje uporabljene datumske funkcije MySQL, pojasnili njihovo sintakso, podali primere in vas vodili skozi način njihove učinkovite uporabe.
Razumevanje tipov podatkov MySQL o datumu in času
Pri delu z datumi v MySQL je lahko za začetnike težavno, zlasti ker se mora format datuma v bazi podatkov ujemati z formatom vhodnih podatkov med vstavljanjem. V mnogih primerih bomo namesto uporabe preprostega datuma morda morali shraniti tako datum kot uro, odvisno od primera uporabe. Tukaj je DATETIME in TIMESTAMP podatkovni tipi pridejo v poštev.
MySQL ponuja naslednje tipe podatkov za shranjevanje vrednosti datuma in časa:
1. DATUM :
- Oblika :
YYYY-MM-DD - Uporablja se samo za shranjevanje datuma (leto, mesec in dan) brez časovne komponente.
2. DATETIME :
- Oblika :
YYYY-MM-DD HH:MM:SS - Shranjuje tako datum kot uro, kar je uporabno, ko morate poleg datuma zajeti tudi določene ure.
3. ČASOVNI ŽIG :
- Oblika :
YYYY-MM-DD HH:MM:SS - Podobno kot
DATETIMEampakTIMESTAMPvključuje tudi podporo za časovni pas. Ko je zapis spremenjen, se samodejno posodobi na trenutni časovni žig, zaradi česar je idealen za sledenje spremembam zapisov skozi čas.
4. LETO :
- Oblika :
YYYYozYY - Uporablja se za shranjevanje samo letnice, kar je lahko uporabno za aplikacije, kjer je potrebna samo letnica, kot je sledenje letnicam rojstva ali proračunskim letom.
Funkcije datuma in časa MySQL
Zdaj pa se poglobimo v datumske funkcije MySQL, ki jih lahko uporabite za učinkovito upravljanje in poizvedovanje podatkov o datumu in času.
1. NOW()- Pridobite trenutni datum in čas
The ZDAJ() funkcija pridobi trenutni datum in čas v LLLL-MM-DD HH:MI:SS format.
poizvedba:
SELECT NOW();
Izhod:

2. CURDATE() - Pridobi samo trenutni datum
Če potrebujemo samo trenutni datum brez časovnega dela, ki ga lahko uporabimo CURDATE() ki vrne datum v YYYY-MM-DD format.
kaj je panj
poizvedba:
SELECT CURDATE();
Izhod:

3. CURTIME() - Pridobite samo trenutni čas
Funkcija CURTIME() vrne trenutni čas HH:MI:SS oblika brez datuma.
poizvedba:
SELECT CURTIME();
Izhod:
java dolžina niza

4. DATE() - Izvlecite datumski del iz vrednosti DATETIME
TheDATE()funkcija izvleče le datumski del iz aDATETIMEozTIMESTAMPvrednost zavreči čas.
primer: Za mizo imenovano users :
| Id | Ime | Čas rojstva |
|---|---|---|
| 4120 | Vadite | 1996-09-26 16:44:15.581 |
poizvedba:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Izhod:
| Ime | Datum rojstva |
|---|---|
| Vadite | 1996-09-26 |
5. EXTRACT() - Izvleček določenih datumskih delov
EXTRACT()se uporablja za ekstrahiranje določenih delov datuma, kot je dan, mesec ali leto. Ta funkcija je lahko še posebej koristna pri analizi ali primerjavi različnih delov datuma. Upoštevati je mogoče več enot, vendar se uporabljajo le nekatere, kot npr MIKROSEKUNDA SEKUNDA MINUTA URA DAN TEDEN MESEC ČETRTLETJE LETO itd. In 'datum' je veljaven datumski izraz.
Sintaksa:
IZVLEČEK (enota IZ datuma);
Dan poizvedbe za ekstrahiranje:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
Izhod:
| Ime | rojstni dan |
|---|---|
| Vadite | 26 |
Poizvedba za ekstrahiranje leta:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Izhod:
| Ime | Leto rojstva |
|---|---|
| Vadite | 1996 |
Poizvedba za ekstrakcijo sekund:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Izhod:
| Ime | BirthSecond |
|---|---|
| Vadite | 581 |
6. DATE_ADD() - Dodajanje intervalov datumu
The DATE_ADD() omogoča dodajanje časovnih intervalov (npr. dni, mesecev, let) datumu ozDATETIMEvrednost.
Sintaksa:
DATE_ADD(vrsta izraza INTERVAL datuma);
primer: Za spodnjo tabelo z imenom ' Test '
| Id | Ime | Čas rojstva |
|---|---|---|
| 4120 | Vadite | 1996-09-26 16:44:15.581 |
Poizvedba do Datumu dodajte 1 leto
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Izhod:
| Ime | BirthTimeModified |
|---|---|
| Vadite | 1997-09-26 16:44:15.581 |
Poizvedba za dodajanje 30 dni datumu
popolna tabela resnic seštevalnika
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Izhod:
| Ime | BirthDayModified |
|---|---|
| Vadite | 1996-10-26 16:44:15.581 |
Poizvedba za dodajanje 4 ur zmenku
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
Izhod:
| Ime | BirthSecond |
|---|---|
| Vadite | 1996-10-26 20:44:15.581 |
7. DATEDIFF() – Poiščite razliko med dvema datumoma
Ta funkcija vrne število dni med dvema datumoma.
Sintaksa:
DATEDIFF(intervaldatum1 datum2);
interval - minuta/ura/mesec/leto itd
date1 & date2 - izraz za datum/čas
Poizvedba do Poiščite razliko med dvema datumoma
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Izhod:
| DateDiff |
|---|
8. DATE_FORMAT() - Oblika datuma in časa
DATE_FORMAT() nam omogoča formatiranje a DATUM DATETIME oz ČASOVNI ŽIG vrednost v obliko po meri z ogradami.
razvrščen arraylist v Javi
Sintaksa:
DATE_FORMAT(oblika datuma);
datum je veljaven datum in format določa izhodni format za datum/čas. Formati, ki jih je mogoče uporabiti, so:
- %a-Skrajšano ime dneva v tednu (ned-sob)
- %b-Skrajšano ime meseca (jan-dec)
- %c-številka meseca (0-12)
- %D-dan v mesecu z angleško pripono (0. 1. 2. 3.)
- %d-številski dan v mesecu (00-31)
- %e-dan v mesecu številčno (0-31)
- %f-mikrosekund (000000-999999)
- %H-ura (00-23)
- %h-ura (01-12)
- % I-ura (01-12)
- %i-minut številčno (00-59)
- %j-dan v letu (001-366)
- %k-ura (0-23)
- %l-ura (1-12)
- %M-ime meseca (januar-december)
- %m-mesečno število (00-12)
- %p-dopoldne ali popoldne
- %r-čas 12-ur (hh:mm: ss, ki mu sledi AM ali PM)
- %S-sekund (00-59)
- %s-sekund (00-59)
- %T-čas 24 ur (hh:mm:ss)
- %U-teden (00-53), kjer je nedelja prvi dan v tednu
- %u-teden (00-53), kjer je ponedeljek prvi dan v tednu
- %V-teden (01-53), kjer je nedelja prvi dan v tednu, uporabljen z %X
- %v-teden (01-53), kjer je ponedeljek prvi dan v tednu, uporabljen z %x
- %W-ime dneva v tednu (nedelja-sobota)
- %w-dan v tednu (0=nedelja 6=sobota)
- %X-leto za teden, kjer je nedelja prvi dan v tednu, štiri številke, uporabljene z %V
- %x-leto za teden, kjer je ponedeljek prvi dan v tednu, štiri številke, uporabljene z %v
- Štirimestna številka leta %Y
- %y-leto, dve števki
Poizvedba za oblikovanje datuma
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Izhod:
| Oblikovani_datum |
|---|
| Četrtek, 10. april 2025 |
Najboljše prakse za delo z datumom in uro v MySQL
1. Vedno uporabljajte ustrezne oblike zapisa datuma
Pri vstavljanju ali posodabljanju datumov se prepričajte, da upoštevate pričakovane formate MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). To zagotavlja, da vaše poizvedbe vrnejo pričakovane rezultate brez napak.
2. Upoštevanje časovnega pasu s TIMESTAMP
Medtem koDATETIMEne shranjuje informacij o časovnem pasuTIMESTAMPpočne. Če je vaša aplikacija občutljiva na časovni pas (na primer v mednarodnih aplikacijah), razmislite o uporabiTIMESTAMPza polja datuma in časa, ki morajo upoštevati različne časovne pasove.
3. Obravnava časovnih obdobij v poizvedbah
Za filtriranje podatkov na podlagi časovnih obdobij (npr. pridobivanje vseh zapisov iz določenega meseca ali leta) zagotovite, da uporabljate ustrezne primerjave datumov vWHEREklavzula. primer:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. Upoštevanje učinkovitosti
Pri delu s funkcijami datuma in časa, zlasti v velikih naborih podatkov, bodite pozorni na vpliv na zmogljivost. Izogibajte se uporabi funkcij, kot jeNOW()ozCURDATE()vWHEREker lahko upočasnijo poizvedbe pri delu z velikimi tabelami.
Zaključek
Funkcije datuma in časa MySQL so bistvena orodja za ravnanje in manipuliranje začasne podatke v vaših zbirkah podatkov. Z obvladovanjem funkcij, kot jeNOW() CURDATE() DATE_ADD() DATEDIFF()inDATE_FORMAT()z lahkoto delate časovno zasnovani izračuni primerjave in formatov . Ključ do učinkovite uporabe teh funkcij je razumevanje njihove sintakse, kdaj in kako jih uporabiti, ter njihove posledice za delovanje v velikih nizih podatkov. S tem znanjem boste lahko zgradili učinkovitejše natančne in razširljive poizvedbe za vse vaše potrebe, povezane z datumom in uro v MySQL.