- 1 1. හැඳින්වීම
- 2 2. MySQL හි වර්තමාන වේලාව ලබා ගැනීම
- 3 3. MySQL හි වර්තමාන වේලාව ආකෘතිකරණය කිරීම
- 4 4. MySQL හි වත්මන් වේලාව භාවිතා කර දිනය/වේලාව ගණනය කිරීම
- 5 5. MySQL වේලා කලාප සැකසුම්
- 6 6. MySQL හි වත්මන් වේලාව පෙරනිමි අගයක් ලෙස සකස් කිරීමේ ක්රමය
- 7 7. සාමාන්ය MySQL දෝෂ සහ විසඳුම් (FAQ)
- 8 8. MySQL හි වත්මන් වේලාව කළමනාකරණය සඳහා හොඳම ක්රියාමාර්ග
1. හැඳින්වීම
MySQL හි වත්මන් වේලාව කළමනාකරණය කිරීමට ඔබට කවදා අවශ්ය වේ?
MySQL හි, වත්මන් වේලාව ලබා ගැනීම විවිධ තත්ත්වයන්හි අවශ්ය වේ. උදාහරණයක් ලෙස, පහත භාවිතා අවස්ථා සාමාන්ය වේ:
- දත්ත ලියාපදිංචි කරන විට ස්වයංක්රීයව කාල සළකුණක් ඇතුළත් කිරීම
- උදාහරණයක් ලෙස, ඇණවුම් දත්ත හෝ ලොග් දත්ත සුරකිද්දී නිර්මාණ දිනය සහ වේලාව ලියා තබා ගැනීම.
- වර්තමාන වේලාව මත දත්ත පෙරහන් කිරීම
- උදාහරණයක් ලෙස, පසුගිය 7 දිනවල දත්ත පමණක් ලබා ගැනීම හෝ අනාගත දිනයන් සමඟ රෙකෝඩ් සොයීම.
- දින සහ වේලාවන් ප්රදර්ශනය සඳහා ආකෘතිකරණය
- වාර්තා සකස් කරන විට දින සහ වේලාවන්ගේ අගයන් වඩා හොඳින් කියවිය හැකි ලෙස ආකෘතිකරණය කිරීම.
- වර්තමාන වේලාව භාවිතා කර දත්ත කල් ඉකුත් වීම කළමනාකරණය
- උදාහරණයක් ලෙස, කූපනය තවමත් වලංගුදැයි වර්තමාන වේලාව සමඟ සැසඳීමෙන් තීරණය කිරීම.
ඔබට දැකගත හැකි පරිදි, MySQL හි වර්තමාන වේලාව නිවැරදිව ලබා ගැනීම සහ එය සැකසීම දත්ත ගබඩා කළමනාකරණයේ වැදගත් කුසලතාවකි.
ඔබ මෙම ලිපියෙන් ඉගෙන ගන්නා දේ
මෙම ලිපිය පහත විෂයයන් විස්තරාත්මකව පැහැදිලි කරයි:
- MySQL හි වර්තමාන වේලාව ලබා ගැනීම කෙසේද (
NOW(),CURRENT_TIMESTAMPආදිය) - දින සහ වේලාවන්ගේ ආකෘති වෙනස් කිරීම කෙසේද (
DATE_FORMAT()භාවිතා කරමින්) - වර්තමාන වේලාව භාවිතා කර දින සහ වේලාව ගණනය කිරීම (
INTERVALභාවිතා කරමින්) - කාල කලාපය වෙනස් කිරීම කෙසේද (
SET SESSION time_zoneභාවිතා කරමින්) - වර්තමාන වේලාව පෙරනිමි අගයක් ලෙස භාවිතා කිරීම (
CURRENT_TIMESTAMP) - සාමාන්ය දෝෂ සහ ඒවා සකස් කිරීමේ ක්රම (FAQ)
MySQL හි “වර්තමාන වේලාව” කළමනාකරණයේ මූලික සිට උසස් භාවිතය දක්වා, මෙම මාර්ගෝපදේශය ප්රායෝගික SQL උදාහරණ ලබා දෙයි. අවසානය දක්වා කියවා බලන්න.
2. MySQL හි වර්තමාන වේලාව ලබා ගැනීම
MySQL හි වර්තමාන වේලාව ලබා ගැනීමට ඇති ක්රියාකාරකම් ලැයිස්තුව
MySQL වර්තමාන වේලාව ලබා ගැනීමට විවිධ ක්රියාකාරකම් ලබා දේ. ඒ අතර වෙනස්කම් තේරුම්ගෙන, සුදුසු ලෙස භාවිතා කරන්න.
| 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 |
NOW() ක්රියාකාරකම
NOW() MySQL හි වර්තමාන වේලාව ලබා ගැනීමට සාමාන්යයෙන් භාවිතා වන ක්රියාකාරකමයි.
එය දිනය සහ වේලාව දෙකම 반환 කරයි.
SELECT NOW();
ප්රතිදානයේ උදාහරණය:
2025-02-11 16:00:00
NOW()වර්තමාන පද්ධති වේලාව 반환 කරයි.- කාල කලාපය මත බලපෑමක් ඇති බැවින්, ඔබේ පරිසරය අනුව ප්රදර්ශිත වේලාව වෙනස් විය හැක (“කාල කලාප සැකසුම්” කොටසෙහි විස්තරාත්මකව පැහැදිලි කර ඇත).
CURRENT_TIMESTAMP භාවිතා කිරීම
CURRENT_TIMESTAMP NOW() සමඟ සමාන ලෙස ක්රියා කරයි. එය SQL ප්රමිතියට අනුකූල වන අතර, අනෙකුත් දත්ත ගබඩා පද්ධති වලද භාවිතා කළ හැක.
SELECT CURRENT_TIMESTAMP;
ප්රතිදානයේ උදාහරණය:
2025-02-11 16:00:00
CURDATE() සමඟ දිනය පමණක් ලබා ගැනීම
CURDATE() ඔබට වර්තමාන දිනය (අවුරුදු, මාස, දිනය) පමණක් ලබා ගැනීමට අවශ්ය වන විට භාවිතා කරයි.
SELECT CURDATE();
ප්රතිදානයේ උදාහරණය:
2025-02-11
CURTIME() සමඟ වේලාව පමණක් ලබා ගැනීම
ඔබට වර්තමාන වේලාව (පැය, මිනිත්තු, තත්පර) පමණක් ලබා ගැනීමට අවශ්ය නම්, CURTIME() භාවිතා කරන්න.
SELECT CURTIME();
ප්රතිදානයේ උදාහරණය:
16:00:00
ඔබට කුමන ක්රියාකාරකම භාවිතා කළ යුතුද?
| Purpose | Recommended Function |
|---|---|
| Retrieve both date and time | NOW() or CURRENT_TIMESTAMP |
| Retrieve date only | CURDATE() |
| Retrieve time only | CURTIME() |
3. MySQL හි වර්තමාන වේලාව ආකෘතිකරණය කිරීම
DATE_FORMAT() සමඟ අභිරුචි ආකෘතිකරණය
DATE_FORMAT() හි මූලික ව්යවස්ථාව
MySQL හි, DATE_FORMAT() ක්රියාකාරකම භාවිතා කර දින සහ වේලාවන්ගේ ආකෘතිය නිදහස්ව වෙනස් කළ හැක.
SELECT DATE_FORMAT(datetime_value, 'format_specifiers');
උදාහරණය: Convert NOW() to the YYYY/MM/DD HH:MM format
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i');
ප්රතිදානය:
2025/02/11 16:45
සාමාන්ය ආකෘති නිරූපක ලැයිස්තුව
| 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 |
TIME() සමඟ වේලාව කොටස පමණක් ලබා ගැනීම
NOW() විසින් 반환 කරන datetime වලින් වේලාව කොටස පමණක් ලබා ගැනීමට අවශ්ය නම්, TIME() ක්රියාකාරකම භාවිතා කරන්න.
SELECT TIME(NOW());
ප්රතිදානය:
16:45:30
YEAR(), MONTH(), සහ DAY() සමඟ කොටස් ලබා ගැනීම
විශේෂ කොටස් පමණක් ලබා ගැනීමට, පහත ක්රියාකාරකම් භාවිතා කරන්න.
| 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 |
ආකෘතිකරණයේ ප්රායෝගික උදාහරණ
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. MySQL හි වත්මන් වේලාව භාවිතා කර දිනය/වේලාව ගණනය කිරීම
INTERVAL සමඟ එකතු/ඉවත් කිරීම
මූලික ව්යවස්ථාව
SELECT current_datetime + INTERVAL number unit;
SELECT current_datetime - INTERVAL number unit;
NOW() මත පදනම්ව වේලාව එකතු කිරීම
උදාහරණයක් ලෙස, “එක සතිය පසු” දිනය-වේලාව ලබා ගැනීමට:
SELECT NOW() + INTERVAL 7 DAY;
ප්රතිදානය උදාහරණය:
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 |
DATEDIFF() භාවිතා කර දෙකේ දිනයන් අතර වෙනස්කම ගණනය කිරීම
SELECT DATEDIFF(NOW(), '2025-01-01');
ප්රතිදානය උදාහරණය:
30
BETWEEN භාවිතා කර දිනය පරාසයක් අනුව පෙරහන් කිරීම
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';
5. MySQL වේලා කලාප සැකසුම්
වත්මන් වේලා කලාපය පරීක්ෂා කිරීම
SHOW VARIABLES LIKE '%time_zone%';
ප්රතිදානය උදාහරණය:
+------------------+----------------+
| Variable_name | Value |
+------------------+----------------+
| system_time_zone | UTC |
| time_zone | SYSTEM |
+------------------+----------------+
සැසියකට අනුව වේලා කලාපය වෙනස් කිරීම
SET SESSION time_zone = 'Asia/Tokyo';
සේවාදායකයේ පෙරනිමි වේලා කලාපය වෙනස් කිරීම
වින්යාස ගොනුව (my.cnf) වෙත පහත සඳහන් එකතු කරන්න:
[mysqld]
default_time_zone = 'Asia/Tokyo'
UTC_TIMESTAMP සමඟ UTC වේලාව ලබා ගැනීම
SELECT UTC_TIMESTAMP();
CONVERT_TZ() සමඟ ප්රාදේශීය වේලාවට පරිවර්තනය කිරීම
SELECT CONVERT_TZ(UTC_TIMESTAMP(), 'UTC', 'Asia/Tokyo');
6. MySQL හි වත්මන් වේලාව පෙරනිමි අගයක් ලෙස සකස් කිරීමේ ක්රමය
CURRENT_TIMESTAMP පෙරනිමි අගයක් ලෙස සකස් කිරීම
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
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
);
DATETIME සහ TIMESTAMP අතර වෙනස්කම
| Type | Affected by Time Zone | Can Set CURRENT_TIMESTAMP as Default |
|---|---|---|
TIMESTAMP | Yes | Yes |
DATETIME | No | No |
ඔබට NOW() පෙරනිමි අගයක් ලෙස භාවිතා කළ නොහැකි වීමට හේතුව සහ විසඳුම
ERROR 1067 (42000): Invalid default value for 'created_at'
විසඳුම:
CREATE TRIGGER set_created_at
BEFORE INSERT ON logs
FOR EACH ROW
SET NEW.created_at = NOW();
7. සාමාන්ය MySQL දෝෂ සහ විසඳුම් (FAQ)
NOW() පෙරනිමි අගයක් ලෙස භාවිතා කළ නොහැක
දෝෂ උදාහරණය
CREATE TABLE logs (
created_at DATETIME DEFAULT NOW()
);
ERROR 1067 (42000): Invalid default value for 'created_at'
විසඳුම
CREATE TABLE logs (
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CURRENT_TIMESTAMP වේලාව වැරදියි
SHOW VARIABLES LIKE 'time_zone';
විසඳුම
SET SESSION time_zone = 'Asia/Tokyo';
NOW() ප්රතිඵලය පැය එකක් අඩුයි
SHOW VARIABLES LIKE 'system_time_zone';
විසඳුම
SET GLOBAL time_zone = 'Asia/Tokyo';
BETWEEN පරාස පෙරහන් කිරීම අපේක්ෂිත ලෙස ක්රියා නොකරයි
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01' AND '2025-02-28';
විසඳුම
SELECT * FROM orders
WHERE created_at BETWEEN '2025-02-01 00:00:00' AND '2025-02-28 23:59:59';
8. MySQL හි වත්මන් වේලාව කළමනාකරණය සඳහා හොඳම ක්රියාමාර්ග
NOW() සහ 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 |
TIMESTAMP සහ DATETIME භාවිතා කළ යුතු අවස්ථා
| Data Type | Affected by Time Zone | Storage Size |
|---|---|---|
TIMESTAMP | Yes | 4 bytes |
DATETIME | No | 8 bytes |
UTC හි සුරකින්න සහ ප්රාදේශීය වේලාවට පරිවර්තනය කරන්න
SELECT CONVERT_TZ(event_time, 'UTC', 'Asia/Tokyo');
BETWEEN වෙනුවට >= සහ < භාවිතා කරන්න
SELECT * FROM orders
WHERE created_at >= '2025-02-01 00:00:00'
AND created_at < '2025-03-01 00:00:00';
INTERVAL භාවිතය ප්රමිතීකරණය කරන්න
SELECT NOW() + INTERVAL 1 DAY;
පැරණි දත්ත නිසි ලෙස පිරිසිදු කරන්න
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 1 YEAR LIMIT 1000;


