- 1 1. Utangulizi
- 2 2. Jinsi ya Kupata Wakati Wa Sasa katika MySQL
- 3 3. Jinsi ya Kupanga Wakati Wa Sasa katika MySQL
- 4 4. Mahesabu ya Tarehe/Muda kwa Kutumia Muda wa Sasa katika MySQL
- 5 5. Mipangilio ya Ukanda wa Muda wa MySQL
- 6 6. Jinsi ya Kuweka Muda wa Sasa kama Thamani Chaguo-msingi katika MySQL
- 7 7. Makosa ya Kawaida ya MySQL na Suluhisho (FAQ)
- 8 8. Mazoezi Bora ya Kushughulikia Muda wa Sasa katika MySQL
1. Utangulizi
Unapohitaji Kushughulikia Wakati Wa Sasa katika MySQL?
Katika MySQL, kupata wakati wa sasa hutajika katika hali nyingi tofauti. Kwa mfano, matumizi yafuatayo ni ya kawaida:
- Kuingiza moja kwa moja muhuri wa wakati wakati wa kusajili data
- Kwa mfano, kurekodi tarehe na wakati wa kuunda wakati wa kuhifadhi data ya agizo au data ya kumbukumbu.
- ** Kuchuja data kulingana na wakati wa sasa**
- Kwa mfano, kupata data tu kutoka siku 7 zilizopita au kutafuta rekodi zenye tarehe za baadaye.
- ** Kupanga tarehe na nyakati kwa ajili ya kuonyesha**
- Kupanga thamani za tarehe na wakati kwa kusomwa vizuri wakati wa kuzalisha ripoti.
- Kudhibiti mwisha wa data kwa kutumia wakati wa sasa
- Kwa mfano, kuamua ikiwa kodi bado ni halali kwa kuilinganisha na wakati wa sasa.
Kama unavyoona, kupata na kudhibiti wakati wa sasa kwa usahihi katika MySQL ni ustadi muhimu katika usimamizi wa hifadhidata.
Utakachojifunza katika Hii Makala
Hii makala inaeleza mada zifuatazo kwa undani:
- Jinsi ya kupata wakati wa sasa katika MySQL (
NOW(),CURRENT_TIMESTAMP, n.k.) - Jinsi ya kubadilisha muundo wa tarehe na wakati (kutumia
DATE_FORMAT()) - Hesabu za tarehe na wakati kutumia wakati wa sasa (kutumia
INTERVAL) - Jinsi ya kubadilisha eneo la wakati (
SET SESSION time_zone) - Kutumia wakati wa sasa kama thamani ya chaguo-msingi (
CURRENT_TIMESTAMP) - Makosa ya kawaida na jinsi ya kuyatenganisha (FAQ)
Kutoka misingi hadi matumizi ya hali ya juu ya kushughulikia “wakati wa sasa” katika MySQL, mwongozo huu hutoa mifano ya vitendo vya SQL. Hakikisha kusoma hadi mwisho.
2. Jinsi ya Kupata Wakati Wa Sasa katika MySQL
Orodha ya Vifaa vya Kupata Wakati Wa Sasa katika MySQL
MySQL hutoa vifaa kadhaa vya kupata wakati wa sasa. Elewa tofauti na utumie kwa usahihi.
| Function | Returns | Example |
|---|---|---|
NOW() | Current date and time (date + time) | SELECT NOW(); → 2025-02-11 16:00:00 |
CURRENT_TIMESTAMP | Same as NOW() (SQL standard) | SELECT CURRENT_TIMESTAMP; |
CURDATE() | Current date only | SELECT CURDATE(); → 2025-02-11 |
CURTIME() | Current time only | SELECT CURTIME(); → 16:00:00 |
Kifaa cha NOW()
NOW() ni kifaa kinachotumiwa sana katika MySQL kupata wakati wa sasa.
Inarudisha tarehe na wakati wote.
SELECT NOW();
Mfano wa pato:
2025-02-11 16:00:00
NOW()inarudisha wakati wa sasa wa mfumo.- Kwa sababu inaathiriwa na eneo la wakati, wakati unaoonyeshwa unaweza kutofautiana kulingana na mazingira yako (imeelezwa kwa undani katika sehemu ya “Mipangilio ya Eneo la Wakati”).
Jinsi ya Kutumia CURRENT_TIMESTAMP
CURRENT_TIMESTAMP inafanya kazi karibu sawa na NOW(). Inazingatia kiwango cha SQL na inaweza kutumiwa pia katika hifadhidata zingine.
SELECT CURRENT_TIMESTAMP;
Mfano wa pato:
2025-02-11 16:00:00
Pata Tarehe Pekee na CURDATE()
CURDATE() hutumiwa wakati unapotaka kupata tarehe ya sasa pekee (mwaka, mwezi, siku).
SELECT CURDATE();
Mfano wa pato:
2025-02-11
Pata Wakati Pekee na CURTIME()
Ikiwa unataka kupata wakati wa sasa pekee (saa, dakika, sekunde), tumia CURTIME().
SELECT CURTIME();
Mfano wa pato:
16:00:00
Ni Kifaa Gani Cha Kutumia?
| Purpose | Recommended Function |
|---|---|
| Retrieve both date and time | NOW() or CURRENT_TIMESTAMP |
| Retrieve date only | CURDATE() |
| Retrieve time only | CURTIME() |
3. Jinsi ya Kupanga Wakati Wa Sasa katika MySQL
Kupanga Kibinafsi na DATE_FORMAT()
Sintaksisi ya Msingi ya DATE_FORMAT()
Katika MySQL, unaweza kutumia kifaa cha DATE_FORMAT() ili kubadilisha muundo wa tarehe na wakati kwa uhuru.
SELECT DATE_FORMAT(datetime_value, 'format_specifiers');
Mfano: Badilisha NOW() kuwa muundo wa YYYY/MM/DD HH:MM
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i');
Pato:
2025/02/11 16:45
Orodha ya Vifaa vya Muundo vya Kawaida
| Specifier | Meaning | Example (2025-02-11 16:45:30) |
|---|---|---|
%Y | 4-digit year | 2025 |
%m | 2-digit month (01-12) | 02 |
%d | 2-digit day (01-31) | 11 |
%H | Hour (00-23, 24-hour format) | 16 |
%i | Minutes (00-59) | 45 |
%s | Seconds (00-59) | 30 |
Chukua Sehemu ya Wakati Pekee na TIME()
Ikiwa unataka kuchukua sehemu ya wakati pekee kutoka kwa datetime inayorudiwa na NOW(), tumia kifaa cha TIME().
SELECT TIME(NOW());
Pato:
16:45:30
Chukua Sehemu na YEAR(), MONTH(), na DAY()
Ili kuchukua sehemu maalum pekee, tumia vifaa vifuatavyo.
| Function | Returns | SQL | Output Example (2025-02-11 16:45:30) |
|---|---|---|---|
YEAR() | Year | SELECT YEAR(NOW()); | 2025 |
MONTH() | Month | SELECT MONTH(NOW()); | 2 |
DAY() | Day | SELECT DAY(NOW()); | 11 |
Mifano ya Vitendo ya Kupanga
The following SQL is useful for trying various formats in practice.
SELECT
NOW() AS 'Original datetime',
DATE_FORMAT(NOW(), '%Y/%m/%d') AS 'YYYY/MM/DD format',
DATE_FORMAT(NOW(), '%H:%i:%s') AS 'HH:MM:SS',
TIME(NOW()) AS 'Time only',
YEAR(NOW()) AS 'Year',
MONTH(NOW()) AS 'Month',
DAY(NOW()) AS 'Day';

4. Mahesabu ya Tarehe/Muda kwa Kutumia Muda wa Sasa katika MySQL
Ongeza/Punguza kwa INTERVAL
Sarufi ya Msingi
SELECT current_datetime + INTERVAL number unit;
SELECT current_datetime - INTERVAL number unit;
Ongeza Muda Kutokana na NOW()
Kwa mfano, ili kupata tarehe na muda “wiki moja baadaye”:
SELECT NOW() + INTERVAL 7 DAY;
Mfano wa Matokeo:
2025-02-18 16:30:00
| Unit | Meaning | Example |
|---|---|---|
| SECOND | Seconds | NOW() + INTERVAL 10 SECOND |
| MINUTE | Minutes | NOW() + INTERVAL 5 MINUTE |
| HOUR | Hours | NOW() + INTERVAL 2 HOUR |
| DAY | Days | NOW() + INTERVAL 10 DAY |
| MONTH | Months | NOW() + INTERVAL 3 MONTH |
Hesabu Tofauti Kati ya Tarehe Mbili kwa DATEDIFF()
SELECT DATEDIFF(NOW(), '2025-01-01');
Mfano wa Matokeo:
30
Chuja kwa Mzigo wa Tarehe kwa BETWEEN
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';
5. Mipangilio ya Ukanda wa Muda wa MySQL
Angalia Ukanda wa Muda wa Sasa
SHOW VARIABLES LIKE '%time_zone%';
Mfano wa Matokeo:
+------------------+----------------+
| Variable_name | Value |
+------------------+----------------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+----------------+
Badilisha Ukanda wa Muda kwa Kikao
SET SESSION time_zone = 'Asia/Tokyo';
Badilisha Ukanda wa Muda Chaguo-msingi wa Seva
Ongeza yafuatayo kwenye faili ya usanidi (my.cnf):
[mysqld]
default_time_zone = 'Asia/Tokyo'
Pata Muda wa UTC kwa UTC_TIMESTAMP
SELECT UTC_TIMESTAMP();
Badilisha kwa Muda wa Mahali kwa CONVERT_TZ()
SELECT CONVERT_TZ(UTC_TIMESTAMP(), 'UTC', 'Asia/Tokyo');
6. Jinsi ya Kuweka Muda wa Sasa kama Thamani Chaguo-msingi katika MySQL
Weka CURRENT_TIMESTAMP kama Thamani Chaguo-msingi
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Usasishaji wa Kiotomatiki kwa ON UPDATE CURRENT_TIMESTAMP
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Tofauti Kati ya DATETIME na TIMESTAMP
| Type | Affected by Time Zone | Can Set CURRENT_TIMESTAMP as Default |
|---|---|---|
TIMESTAMP | Yes | Yes |
DATETIME | No | No |
Kwa Nini Huwezi Kutumia NOW() kama Thamani Chaguo-msingi na Suluhisho
ERROR 1067 (42000): Invalid default value for 'created_at'
Suluhisho:
CREATE TRIGGER set_created_at
BEFORE INSERT ON logs
FOR EACH ROW
SET NEW.created_at = NOW();
7. Makosa ya Kawaida ya MySQL na Suluhisho (FAQ)
Haiwezi Kutumia NOW() kama Thamani Chaguo-msingi
Mfano wa Hitilafu
CREATE TABLE logs (
created_at DATETIME DEFAULT NOW()
);
ERROR 1067 (42000): Invalid default value for 'created_at'
Suluhisho
CREATE TABLE logs (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Muda wa CURRENT_TIMESTAMP Si Sahihi
SHOW VARIABLES LIKE 'time_zone';
Suluhisho
SET SESSION time_zone = 'Asia/Tokyo';
Matokeo ya NOW() Yamepungua kwa Saa Moja
SHOW VARIABLES LIKE 'system_time_zone';
Suluhisho
SET GLOBAL time_zone = 'Asia/Tokyo';
Uchinujaji wa Mzigo wa BETWEEN Haufanyi Kazi kama Ilivyotarajiwa
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01' AND '2025-02-28';
Suluhisho
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';
8. Mazoezi Bora ya Kushughulikia Muda wa Sasa katika MySQL
Lini Kutumia NOW() vs CURRENT_TIMESTAMP
| Use Case | Recommended |
|---|---|
Retrieve the current time in a SELECT statement | NOW() |
Automatically set the current time during INSERT | CURRENT_TIMESTAMP |
Set as the default value of a TIMESTAMP column | CURRENT_TIMESTAMP |
Lini Kutumia TIMESTAMP vs DATETIME
| Data Type | Affected by Time Zone | Storage Size |
|---|---|---|
TIMESTAMP | Yes | 4 bytes |
DATETIME | No | 8 bytes |
Hifadhi katika UTC na Badilisha kwa Muda wa Mahali
SELECT CONVERT_TZ(event_time, 'UTC', 'Asia/Tokyo');
Tumia >= na < Badala ya BETWEEN
SELECT * FROM orders
WHERE created_at >= '2025-02-01 00:00:00'
AND created_at < '2025-03-01 00:00:00';
Sanifisha Matumizi ya INTERVAL
SELECT NOW() + INTERVAL 1 DAY;
Safisha Data ya Zamani Kwa Usahihi
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 1 YEAR LIMIT 1000;


