MySQL NOW funktsiooni juhend – põhialused ja rakendused

1. MySQL NOW funktsiooni ülevaade

MySQLi NOW funktsioon on funktsioon, mida kasutatakse andmebaasis praeguse kuupäeva ja kellaaja lihtsaks hankimiseks. NOW funktsiooni kasutamisega saate hankida andmete sisestamise ajal ajatemplit ja kellaaja teavet, mis on kasulik logide salvestamiseks. Lihtsana, kuid väga võimsana tööriistana on see laialdaselt kasutusel.

NOW funktsiooni põhiline süntaks

NOW funktsiooni süntaks on väga lihtne. Alloleva päringu abil saate hankida praeguse kuupäeva ja kellaaja.
SELECT NOW();
Tulemuseks tagastatakse YYYY-MM-DD HH:MM:SS formaadis. Näiteks, kui on 24. oktoober 2024 kell 16:30, siis saadakse järgmine tulemus.
2024-10-24 16:30:00
Lisaks tagastab NOW funktsioon praeguse kuupäeva ja kellaaja andmebaasi ajavööndi alusel. See võimaldab kogu süsteemis ühtset ajahaldust.

NOW funktsiooni kasutusvaldkonnad

NOW funktsioon on eriti kasulik järgmistes olukordades.
  • Logide salvestamine: Andmete muutmise ja sisestamise ajad salvestatakse automaatselt.
  • Ajatempel: Kasutaja tegevuste ajastuse salvestamiseks kasutatakse.
  • Aja sõltuv filtreerimine: Andmete väljavõtmiseks, mis on tekkinud kindla ajaperioodi jooksul.

2. NOW funktsiooni põhiline kasutusnäide

NOW funktsiooni abil praeguse kuupäeva ja kellaaja saamise põhilist kasutusnäidet vaatame.
SELECT NOW();
See päring tagastab praeguse kuupäeva ja kellaaja. Lisaks saab tulemuse stringi kujul, on võimalik saada ka numbrilises vormingus. Järgmise päringu kasutamisel tagastatakse praegune kuupäev ja kellaaeg numbrilises vormingus (YYYYMMDDHHMMSS).
SELECT NOW() + 0;
Näiteks tulemus võib olla “20241024163000”, mis on mugav, kui soovid käsitleda kuupäeva numbriliselt.

Murdosa sekundi täpsuse määramine

funktsioon võimaldab määrata murdosa sekundi täpsust. Täpsus määratakse argumendiga järgmiselt.
SELECT NOW(3);
See päring tagastab tulemuse, millel on 3-kohaline murdosa sekundi täpsus. Näiteks kujul “2024-10-24 16:30:00.123”. See on väga kasulik funktsioon süsteemides, mis nõuavad sekundi täpsust.

3. SYSDATE() ja NOW() erinevus

NOW funktsiooniga sarnane funktsioon on SYSDATE(), kuid need töötavad veidi erinevalt.
  • NOW(): päringu käivitamise ajal oleva kellaaja võtmine, kogu avaldus säilitab sama kellaaja. Isegi kui tehing kestab pikka aega, tagastab see sama tulemuse.
  • SYSDATE(): päringu iga sammu juures võetakse selle hetke kellaaeg. See tähendab, et ka pikaajalise tehingu ajal võetakse reaalajas kellaaeg.
Näiteks pikaajaliste batch-protsesside puhul pakub SYSDATE() täpsemaid tulemusi, kuid kui rõhutatakse tehingu järjekindlust, soovitatakse kasutada NOW().

Näide erinevusest päringu sees

Allpool on näide päringust, mis näitab SYSDATE() ja NOW() toimimise erinevusi.
SELECT NOW(), SYSDATE();
Tulemus on järgmine.
NOW():     2024-10-24 16:30:00
SYSDATE(): 2024-10-24 16:30:01
Päringu käivitamise hetkel esinev ajavahe kajastub SYSDATE() puhul, samas kui NOW() säilitab päringu käivitamise algusaja. Nii et kuigi nende toimimine erineb veidi, on oluline valida õige funktsioon vastavalt kasutusjuhtumile.

4. NOW funktsiooni kasutusnäited

NOW funktsioon on teatud olukordades väga kasulik. Näiteks, kui soovite automaatselt salvestada andmete sisestamise kuupäeva ja kellaaja, kasutage NOW funktsiooni järgmiselt.
INSERT INTO users (username, created_at) 
VALUES ('example_user', NOW());
Sellega salvestatakse kirje sisestamisel automaatselt praegune kellaaeg created_at veergu. Logimise ja sündmuste jälgimise puhul on see funktsioon eriti hinnatud. Lisaks, kui soovite välja võtta viimase 7 päeva jooksul loodud andmeid, saate NOW funktsiooni kasutada järgmiselt.
SELECT * FROM orders
WHERE order_date >= NOW() - INTERVAL 7 DAY;</See päring toob kõik kirjed, mis on loodud viimase 7 päeva jooksul alates praegusest kuupäevast ja kellaajast. Aja sõltuvate andmete väljavõtmisel on NOW funktsioon väga tõhus.

5. NOW funktsiooni tähelepanekud

NOW funktsiooni kasutamisel on mõned tähelepanekud. Eriti tuleb olla ettevaatlik, kuna see võib mõjutada tehingu terviklikkust, seega tuleb konteksti suhtes tähelepanelik olla.
  • Käitumine tehingu sees: NOW funktsioon tagastab tehingu sees ühtlase tulemuse, seega ka pikaajalise töötlemise ajal tagastab sama kellaaja. See on oluline andmete terviklikkuse säilitamiseks. Kuid kui on vaja reaalajas aega, on parem kasutada SYSDATE().
Lisaks sõltub NOW funktsioon ajavööndist, seega võib süsteemi seadistuste tõttu anda erinevaid tulemusi; seda tuleb samuti arvestada. Globaalsetes rakendustes on vaja sellist aspekti arvestavat disaini.