MySQL Timestamp ya Sasa: Jinsi ya Kupata Tarehe na Muda wa Sasa (NOW, SYSDATE, UTC_TIMESTAMP)

目次

1. Utangulizi

Kupata wakati wa sasa katika MySQL ni sehemu muhimu ya usimamizi wa hifadhidata.
Kwa mfano, unaweza kuhitaji kurejesha wakati wa sasa katika hali kama ifuatayo:

  • Kurekodi kiotomatiki alama ya muda wa uundaji wakati wa kuingiza data (kwa mfano, alama ya muda wakati mtumiaji mpya anajiandikisha)
  • Kurekodi nyakati za kuingia kwa watumiaji (kwa mfano, kusimamia historia ya kuingia)
  • Kurejesha data ndani ya muda fulani (kwa mfano, kupata historia ya maagizo kutoka saa 24 zilizopita)
  • Kurekodi logi za utekelezaji wa mfumo (kwa mfano, kusimamia logi za makosa na logi za matukio)

Kama unavyoona, kurejesha kwa usahihi “wakati wa sasa” kwa usimamizi wa data na kurekodi ni muhimu kwa uendeshaji wa hifadhidata.

Katika makala hii, tutaelezea jinsi ya kupata wakati wa sasa katika MySQL kwa undani kwa kutumia maswali halisi ya SQL.
Pia tutashughulikia tofauti kati ya kazi zinazotumika mara kwa mara, jinsi ya kuchagua ile sahihi, na mifano ya maswali ya vitendo—inayofaa kwa wanaoanza hadi watumiaji wa kati.

2. Kazi za MySQL za Kupata Tarehe/Wakati wa Sasa (Jedwali la Kulinganisha)

MySQL hutoa kazi nyingi za kurejesha wakati wa sasa.
Kuchagua kazi sahihi kwa kesi yako ni muhimu, lakini watu wengi wanapata tofauti hizo kuwa za kuchanganyikiwa.

Katika sehemu hii, tunalinganisha kazi kuu zinazotumika kupata tarehe/wakati wa sasa katika MySQL na kuelezea tabia zao kwa undani.

2.1 Jedwali la Kulinganisha la Kazi za Wakati za MySQL

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost commonly used
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSUnlike NOW(), it can change on each execution
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone is fixed to UTC

Kutoka kwenye jedwali hapo juu, kazi nyingi hutoka na “tarehe na wakati wa sasa” au “wakati wa sasa,” lakini kazi bora inategemea lengo lako.

2.2 Muhtasari na Tabia za Kazi Kila

Kazi ya NOW()

  • Kazi ya kawaida zaidi ya kupata tarehe na wakati wa sasa
  • Hurejesha wakati wakati kauli ya SQL inaanza
  • Mara nyingi hutumika kwa alama za muda wakati wa kuingiza au kusasisha data
    SELECT NOW();
    

Mfano wa matokeo

2025-02-14 15:30:45

Kazi ya SYSDATE()

  • Inapata wakati wa sasa wakati wa utekelezaji
  • Tofauti na NOW(), SYSDATE() inaweza kurudisha thamani tofauti kila inapo tathminiwa (inaweza kubadilika hata ndani ya muamala)
    SELECT SYSDATE();
    

Mfano wa matokeo

2025-02-14 15:30:47

Kazi ya CURTIME()

  • Inapata tu wakati (HH:MM:SS)
  • Inafaa wakati tarehe haihitajiki
    SELECT CURTIME();
    

Mfano wa matokeo

15:30:45

Kazi ya CURRENT_TIME()

  • Inafanya kazi sawa na CURTIME()
  • Jina la kazi linaloendana na kiwango cha SQL
    SELECT CURRENT_TIME();
    

Mfano wa matokeo

15:30:45

Kazi ya CURRENT_TIMESTAMP()

  • Inatenda kama NOW()
  • Inaweza kuelezwa kama thamani ya safu DEFAULT (mara nyingi inafaa zaidi kuliko NOW() kwa difoti)
    SELECT CURRENT_TIMESTAMP();
    

Mfano wa matokeo

2025-02-14 15:30:45

Weka kama thamani ya difoti wakati wa kuunda jedwali:

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Kazi ya UTC_TIMESTAMP()

  • Inapata UTC ya sasa (Coordinated Universal Time)
  • Haina utegemezi wa eneo la saa la seva, kuruhusu alama za muda zisizobadilika
    SELECT UTC_TIMESTAMP();
    

Mfano wa matokeo

2025-02-14 06:30:45

2.3 Ni Kazi Yipii Unapaswa Kutumia?

Use caseRecommended function
Get the current date and timeNOW()
Get a different timestamp each time within a transactionSYSDATE()
Need only the current time (HH:MM:SS)CURTIME() or CURRENT_TIME()
Set as a table default valueCURRENT_TIMESTAMP()
Get UTC timeUTC_TIMESTAMP()

Kwa ujumla, kwa urejeshaji wa tarehe/wakati wa kawaida, NOW() huwa chaguo sahihi.
Hata hivyo, kuchagua kazi bora kwa kesi yako kunaruhusu shughuli za data kuwa rahisi zaidi na za kuaminika.

3. Maelezo ya Kazi ya NOW()

Kazi ya MySQL NOW() ni kazi inayotumika zaidi kwa kupata tarehe na wakati wa sasa (tarehe + wakati).
Inatumika sana kwa kuhifadhi alama za muda katika hifadhidata na kurejesha data ndani ya muda maalum.

3.1 Matumizi ya Msingi ya NOW()

Sintaksia ya NOW()

SELECT NOW();

Mfano wa matokeo

2025-02-14 15:30:45
  • Muundo wa pato ni YYYY-MM-DD HH:MM:SS (mwaka-mwezi-siku saa:dakika:sekunde).
  • Muda hupatikana kulingana na mipangilio ya kikoa chaguo-msingi cha MySQL.

3.2 Matumizi ya Kawaida ya NOW()

① Rekodi muda wa sasa wakati wa kuingiza data

Unapoingiza data kwenye hifadhidata, unaweza kutumia NOW() kurekodi alama ya muda wa uundaji.

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

② Rekodi muda wa sasa wakati wa kusasisha data

UPDATE users SET last_login = NOW() WHERE id = 1;

③ Pata data kutoka kipindi fulani cha muda

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
  • Kwa kubainisha INTERVAL 1 DAY, unaweza kupata “data kutoka siku 1 iliyopita.”

3.3 Aina ya Matokeo na Jinsi ya Kubadilisha Muundo wa Pato

Aina ya matokeo ya NOW()

  • Aina ya DATETIME (YYYY-MM-DD HH:MM:SS)
  • Pia inaweza kutazamwa kama kamba (string)
    SELECT NOW(), typeof(NOW());
    

Jinsi ya kubadilisha muundo

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Mfano wa pato

2025-02-14 15:30:45

3.4 Tofauti Kati ya NOW() na SYSDATE()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeCan return different timestamps within the same statement
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Mfano wa pato

NOW()        | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48

🚨 Kama unafanya kazi na miamala, NOW() inapendekezwa kwa uthabiti.

3.5 Vizuizi na Vidokezo kwa NOW()

① Inategemea kikoa cha muda

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

② Kwa thamani chaguo-msingi za jedwali, tumia CURRENT_TIMESTAMP

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3.6 Muhtasari wa NOW()

  • NOW() ni kazi ya kawaida zaidi kupata tarehe na saa ya sasa katika MySQL.
  • Inaweza kutumika kwa kuingiza, kusasisha, na kupata data inayohusiana na muda.
  • Tumia NOW() unapohitaji alama ya muda thabiti ndani ya muamala.
  • SYSDATE() hurejesha muda tofauti kila tathmini, hivyo tumia inapohitajika muda halisi wa utekelezaji.
  • Tumia CONVERT_TZ() kupata muda katika kikoa cha muda tofauti.

📌 Hitimisho: Katika hali nyingi, NOW() ni chaguo bora kupata tarehe na saa ya sasa katika MySQL.

4. Sifa za Kazi ya SYSDATE()

Fungsi ya SYSDATE() ni njia nyingine ya kupata tarehe na saa ya sasa katika MySQL, lakini inafanya kazi tofauti na NOW().
Katika sehemu hii, tutaelezea matumizi ya msingi ya SYSDATE(), jinsi inavyotofautiana na NOW(), na vidokezo muhimu.

4.1 SYSDATE() ni Nini?

SYSDATE() ni fungsi inayorudisha muda wakati wa utekelezaji wa tamko.
Tofauti na NOW(), inarudisha alama ya muda tofauti kila inapokadiriwa.

Sarufi ya SYSDATE()

SELECT SYSDATE();

Mfano wa pato

2025-02-14 16:00:45
  • Imerejeshwa katika muundo wa YYYY-MM-DD HH:MM:SS
  • Inawakilisha wakati wa utekelezaji wa swali

4.2 Tofauti Kati ya SYSDATE() na NOW()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp each time

Ulinganisho wa tabia: NOW() vs SYSDATE()

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Mfano wa pato

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48

📌 Mambo Muhimu

  • NOW() inahifadhi alama ya muda kutoka mwanzo wa tamko, hivyo haibadiliki.
  • SYSDATE() inarejesha alama ya muda tofauti kila inapokadiriwa, hivyo hubadilika baada ya sekunde 3.

🚨 Tumia NOW() kwa usindikaji wa miamala

  • Kwa sababu SYSDATE() inaweza kutenda tofauti na NOW() katika mazingira ya nyuzi nyingi, NOW() kwa ujumla inapendekezwa kwa uthabiti wa miamala.

4.3 Mifano ya Kutumia SYSDATE()

① Rekodi wakati wa sasa wakati wa kuingiza data

INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());

② Rekodi wakati wa sasa wakati wa kusasisha data

UPDATE users SET last_login = SYSDATE() WHERE id = 1;

③ Pata wakati wa sasa katika muundo maalum

SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Mfano wa matokeo

2025-02-14 16:05:30

4.4 Mipaka na Maelezo kwa SYSDATE()

① Tabia ya muamala

  • NOW() inahifadhi alama ya wakati kutoka mwanzo wa tamko , so it can be used consistently within a transaction.
  • SYSDATE() returns a different timestamp each time , so time drift can occur within a transaction.

② Haiwezi kutumika kama thamani ya DEFAULT

  • SYSDATE() haiwezi kuwekwa kama thamani ya DEFAULT ya safu ya jedwali .

Suluhisho: Use DEFAULT CURRENT_TIMESTAMP.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.5 Ni Lini Unapaswa Kutumia SYSDATE()?

Use caseRecommended function
Typical current timestamp retrievalNOW()
Use a consistent timestamp within a transactionNOW()
Need the exact execution timeSYSDATE()

🚀 SYSDATE() inafaa kwa urekodi wa wakati halisi, lakini si bora kwa usindikaji wa muamala.

4.6 Muhtasari wa SYSDATE()

  • SYSDATE() inapata alama ya wakati wakati wa utekelezaji, kinyume na NOW().
  • Kwa sababu inaweza kurudisha thamani tofauti kila wakati, ni muhimu kwa urekodi wa wakati halisi.
  • Kwa uthabiti wa muamala, NOW() inapendekezwa.
  • Kwa thamani za chaguo-msingi, tumia CURRENT_TIMESTAMP.

📌 Hitimisho: Kwa upatikanaji wa alama ya wakati kwa ujumla, NOW() ni bora; kwa nyakati sahihi za utekelezaji, chagua SYSDATE().

5. CURTIME() and CURRENT_TIME()

Unapohitaji kupata wakati wa sasa katika MySQL, CURTIME() na CURRENT_TIME() hutumika unapohitaji wakati pekee (HH:MM:SS).
Katika sehemu hii, tutaelezea matumizi ya msingi, tofauti, na mifano ya vitendo kwa kila moja.

5.1 CURTIME() ni Nini?

CURTIME() ni kazi inayopata wakati wa sasa (saa, dakika, sekunde) katika MySQL.
Kipengele chake kuu ni kwamba hakijumuishi tarehe—sehemu ya wakati pekee ndiyo inarudishwa.

Sintaksia ya CURTIME()

SELECT CURTIME();

Mfano wa matokeo

16:30:45
  • Muundo: HH:MM:SS
  • Inategemea mipangilio ya eneo la saa la seva
  • Kinyume na NOW(), inafaa unapohitaji taarifa ya tarehe

5.2 CURRENT_TIME() ni Nini?

CURRENT_TIME(), kama CURTIME(), ni kazi inayopata wakati wa sasa (HH:MM:SS).
Katika vitendo, inafanya sahihi sawa na CURTIME().

Sintaksia ya CURRENT_TIME()

SELECT CURRENT_TIME();

Mfano wa matokeo

16:30:45

📌 Tofauti ni nini?

  • CURTIME() ni maalum kwa MySQL
  • CURRENT_TIME() ni kiwango cha SQL
  • Wanafanya sawa
  • Chagua kulingana na upendeleo wa usomaji (hakuna tofauti ya utendaji)

5.3 CURTIME vs CURRENT_TIME (Ulinganisho)

FunctionWhat it returnsFormatNotes
CURTIME()Current time (hour/minute/second)HH:MM:SSMySQL-specific function
CURRENT_TIME()Current time (hour/minute/second)HH:MM:SSSQL-standard function

5.4 Mifano ya Vitendo ya CURTIME / CURRENT_TIME

① Rekodi wakati wa sasa wakati wa kuingiza data

INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());

② Uchujaji (pata data ndani ya safu ya wakati maalum)

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

③ Badilisha usahihi (jumuisha milisekunde)

SELECT CURTIME(3);  -- Display up to 3 fractional digits

Mfano wa matokeo

16:30:45.123

5.5 Mipaka na Maelezo kwa CURTIME / CURRENT_TIME

① Hakuna taarifa ya tarehe, hivyo changanya na tarehe inapohitajika

SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;

② Unapotumia kama thamani ya DEFAULT

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_time TIME DEFAULT CURTIME()
);

5.6 Ni Lini Unapaswa Kutumia CURTIME / CURRENT_TIME?

Use caseRecommended function
Need only the current time (hour/minute/second)CURTIME() or CURRENT_TIME()
Need current date and timeNOW()
Need millisecond precisionCURTIME(3)

📌 Katika hali nyingi, CURTIME() au CURRENT_TIME() hufanya kazi vizuri.
Chagua yoyote unayoiona inasomwa vizuri zaidi.

5.7 Muhtasari wa CURTIME() / CURRENT_TIME()

  • CURTIME() ni ya MySQL pekee; CURRENT_TIME() ni kiwango cha SQL
  • Zote zina hifadhi wakati wa sasa (HH:MM:SS)
  • Tumia CURTIME(3) au DATE_FORMAT() ili kurekebisha muundo/ukuaji
  • Ikiwa unahitaji tarehe, unganisha na CURDATE() au tumia NOW()
  • Kwa defaults, CURRENT_TIMESTAMP hutumiwa sana

📌 Hitimisho: Ikiwa unahitaji wakati wa sasa tu, CURTIME() ni chaguo thabiti.

6. Mifano ya Uchunguzi wa Vitendo Ukitumia Wakati wa Sasa

Sasa kwa kuwa unaelewa jinsi ya kupata wakati wa sasa katika MySQL, hebu tuangalie njia za vitendo za kuitumia.
Katika sehemu hii, tutaanzisha mifano halisi ya uchunguzi ukitumia wakati wa sasa.
Utajifunza mbinu muhimu kwa kazi za kila siku za hifadhi ya data kama vile inserts, updates, na searches.

6.1 Rekodi wakati wa sasa unapoingiza data

① Rekodi wakati wa sasa wakati mtumiaji anajiandikisha

INSERT INTO users (name, email, created_at) 
VALUES ('Sato', 'sato@example.com', NOW());

6.2 Rekodi wakati wa sasa unapobadilisha data

② Rekodi muhuri wa wakati wa kuingia kwa mtumiaji wa mwisho

UPDATE users SET last_login = NOW() WHERE id = 1;

6.3 Pata data kutoka siku N za nyuma

③ Pata data ya agizo kutoka siku 7 za nyuma

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

6.4 Pata data iliyoundwa ndani ya kipindi maalum cha wakati

④ Pata data iliyoundwa leo kati ya 9:00 AM na 6:00 PM

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

6.5 Pata wakati wa sasa ukiwa na akili ya maeneo ya wakati

⑤ Badilisha wakati wa UTC kuwa wakati wa Japan (JST)

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

6.6 Weka wakati wa kuunda rekodi kuwa muhuri wa wakati wa sasa kwa default

⑥ Weka created_at kiotomatiki kuwa muhuri wa wakati wa sasa

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

6.7 Futa data baada ya kiasi fulani cha wakati

⑦ Futa data iliyo na umri zaidi ya siku 30

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.8 Pata wakati wa sasa na ukuaji wa miliseki (mikroseki)

⑧ Pata muhuri wa wakati wa sasa na ukuaji wa miliseki

SELECT NOW(3);

Mfano wa pato

2025-02-14 16:30:45.123

6.9 Mwongozo wa Uchaguzi wa Matumizi

Use caseRecommended functionExample
Record the current time when inserting dataNOW()INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Record the current time when updating dataNOW()UPDATE users SET last_login = NOW() WHERE id = 1;
Retrieve data from the past N daysNOW() - INTERVAL X DAYSELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Retrieve data within a specific time rangeCURTIME()SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
Convert UTC time to JSTCONVERT_TZ()SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Delete old data (older than 30 days)NOW() - INTERVAL X DAYDELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.10 Muhtasari

  • NOW() inashughulikia kupata muhuri wa wakati wa sasa wa msingi
  • CURTIME() na CURRENT_TIME() ni muhimu wakati unahitaji wakati tu
  • Unaweza kutumia wakati wa sasa kwa uchunguzi wa dirisha la wakati, kuchuja wakati wa siku, na muhuri wa wakati wa ukuaji wa miliseki
  • Kwa kuwa muhuri wa wakati hutegemea maeneo ya wakati, tumia CONVERT_TZ() ili kupata wakati sahihi
  • Kwa usimamizi wa ukubwa wa hifadhi ya data, kubuni utaratibu wa kufuta data ya zamani kiotomatiki pia ni muhimu

📌 Hitimisho: Kutumia wakati wa sasa kwa ufanisi kunakusaidia kusimamia data kwa ufanisi zaidi katika MySQL.

7. FAQ (Masuala Yanayoulizwa Mara Nyingi)

Hapa kuna masuala yanayoulizwa mara nyingi (FAQ) kuhusu jinsi ya kupata wakati wa sasa katika MySQL.
Kila swali linajibiwa wazi na kwa ufupi.

7.1 Tofauti kati ya NOW() na SYSDATE() ni nini?

Jibu

Zote NOW() na SYSDATE() hupata tarehe na wakati wa sasa, lakini zinatofautiana katika wakati ambapo thamani inatathminiwa.

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp on each evaluation

Mfano wa jaribio

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Mfano wa pato

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48

🚨 Kwa uchakataji wa shughuli, NOW() inapendekezwa kwa ujumla.

7.2 Are CURRENT_TIMESTAMP() and NOW() the same?

Answer

They behave almost the same, but CURRENT_TIMESTAMP() can be used as a DEFAULT value.

Example when creating a table

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.3 How do I get the current time in a specific time zone?

Answer

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

7.4 How can I automatically record the current time?

Answer

When creating a table, specify DEFAULT CURRENT_TIMESTAMP to automatically store the current time in created_at.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.5 How do I retrieve data from the past N days?

Answer

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

7.6 How do I get the current time with millisecond (microsecond) precision?

Answer

SELECT NOW(3);

Example output

2025-02-14 16:30:45.123

7.7 Summary

  • NOW() and SYSDATE() differ in evaluation timing
  • CURRENT_TIMESTAMP() can be used as a DEFAULT value
  • Use CONVERT_TZ() to retrieve timestamps in other time zones
  • Use DEFAULT CURRENT_TIMESTAMP to auto-record creation timestamps
  • Use NOW() - INTERVAL X DAY to retrieve data from the past X days
  • NOW(3) or NOW(6) supports millisecond/microsecond precision timestamps

📌 Conclusion: Choosing the right MySQL time function is essential for working with current timestamps.

8. Summary

In this article, we explained how to get the current time in MySQL.
Focusing on the NOW() function, we covered differences between similar functions, practical query examples, and important notes.

8.1 Main MySQL Functions to Get the Current Time

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost common function
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSCan return different values on each evaluation
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone fixed to UTC

📌 Conclusion:

  • For general current timestamp retrieval, NOW() is usually best .
  • If you need the exact execution time, use SYSDATE() .
  • If you only need the time (no date), choose CURTIME() .

8.2 Practical Queries Using the Current Time

Record the current time when inserting data

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

Record the current time when updating data

UPDATE users SET last_login = NOW() WHERE id = 1;

Retrieve data from the past 7 days

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

Retrieve time with time zones in mind

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

Delete old data (older than 30 days)

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

8.3 Notes About Time Zones

  • MySQL NOW() depends on the default time zone setting , so results can differ across environments.
  • Use CONVERT_TZ() to retrieve timestamps in another time zone.
  • If you want to change the server time zone:
    SET GLOBAL time_zone = 'Asia/Tokyo';
    

8.4 FAQ About MySQL Current Time Functions

Q1. What’s the difference between NOW() and SYSDATE()?

NOW() retrieves the time at query start, while SYSDATE() retrieves the time at execution.

Q2. Are CURRENT_TIMESTAMP() and NOW() the same?

➡ They are almost the same, but CURRENT_TIMESTAMP() can be used as a DEFAULT value.

Q3. How do I get the current time with millisecond (microsecond) precision?

➡ Use NOW(3) (milliseconds) or NOW(6) (microseconds).

SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123

8.5 Summary

  • Katika MySQL, kuchagua kazi sahihi kwa wakati wa sasa ni muhimu .
  • Tumia NOW() kwa kesi za kawaida, na SYSDATE() unapohitaji alama za wakati halisi za utekelezaji .
  • Tumia CURTIME() kwa muda pekee, na CONVERT_TZ() kwa ubadilishaji wa ukanda wa saa .
  • Unaweza kutumia wakati wa sasa katika uingizaji, masasisho, utafutaji, na ufutaji .

📌 Hitimisho: Boresha ujuzi wa kazi za muda za MySQL ili kudhibiti data kwa ufanisi zaidi.