1. MySQL DATETIME යනු කුමක්ද?
MySQL DATETIME යනු දිනය සහ වේලාව එකම ක්ෂේත්රයක සුරකින්න භාවිතා කරන දත්ත වර්ගයකි. දත්ත ගබඩාවක දිනය සහ වේලාව අගයන් කළමනාකරණය කිරීම ලොග් කිරීම සහ වෙන්කර ගැනීමේ පද්ධති වැනි බොහෝ යෙදුම් සඳහා අත්යවශ්ය වේ. DATETIME වර්ගය දිනය සහ වේලාව එකට සුරකිමින් පුළුල් පරාසයක් සහය දක්වයි. එහි පරාසය '1000-01-01 00:00:00' සිට '9999-12-31 23:59:59' දක්වා වන අතර, භාගික තත්පරද සහය දක්වයි.
2. MySQL දිනය සහ වේලාව දත්ත වර්ගයන්ගේ සමාලෝචනය
2.1 දිනය සහ වේලාව හසුරවීමට දත්ත වර්ග
MySQL දිනය සහ වේලාව සමඟ වැඩ කිරීම සඳහා පහත දත්ත වර්ග ලබා දේ:
DATE: දිනය (අවුරුදු, මාසය, දිනය) සුරකින්න. පරාසය'1000-01-01'සිට'9999-12-31'දක්වාය.TIME: වේලාව පමණක් සුරකින්න. පරාසය'-838:59:59'සිට'838:59:59'දක්වාය.DATETIME: දිනය සහ වේලාව දෙකම සුරකින්න. පරාසය'1000-01-01 00:00:00'සිට'9999-12-31 23:59:59'දක්වාය.TIMESTAMP: UNIX ටයිම්ස්ටෑම්ප් එකක් සුරකින්න. පරාසය'1970-01-01 00:00:01'සිට'2038-01-19 03:14:07'දක්වාය.
2.2 DATETIME සහ TIMESTAMP අතර වෙනස්කම්
DATETIME සහ TIMESTAMP සමාන වුවද, ඒවා අතර පහත වෙනස්කම් පවතී:
- කාල කලාපය :
DATETIMEකාල කලාපයන්ට පරතර නොවන ස්ථිර අගයක් සුරකින්න. එයට විරුද්ධව,TIMESTAMPසුරැකීමේදී UTC වෙත පරිවර්තනය කර, ලබා ගැනීමේදී සේවාදායකයේ වත්මන් කාල කලාපයට පරිවර්තනය කරයි. එබැවින්,DATETIMEකාල කලාප‑නිරපේක්ෂ දිනය/වේලාව අගයන් (උදාහරණයක් ලෙස, සිදුවීම් වේලාව) සඳහා සුදුසු වන අතර,TIMESTAMPසේවාදායක කාල කලාපයට බැඳුණු දත්ත (ලොග් වැනි) සඳහා සුදුසු වේ. - ගබඩා ආකෘතිය :
DATETIMEඑහිම ආකාරයෙන් ගබඩා කරයි, එයට විරුද්ධවTIMESTAMPUNIX ටයිම්ස්ටෑම්ප් ලෙස ගබඩා කරයි. එනිසා,TIMESTAMPඅගයන් සේවාදායකයේ කාල කලාප සැකසුම් මත බලපෑම් ලැබේ.
3. MySQL හි DATETIME භාවිතා කරන ආකාරය
3.1 DATETIME තීරුවක් නිර්මාණය කිරීම
DATETIME වර්ගයේ තීරුවක් නිර්මාණය කිරීමට, පහත SQL වාක්යය භාවිතා කරන්න:
CREATE TABLE sample_table (
event_time DATETIME
);
මෙම උදාහරණයේ, sample_table නමැති වගුවේ event_time නමැති DATETIME තීරුවක් නිර්මාණය කර ඇත.
3.2 DATETIME අගයන් ඇතුළත් කිරීම
MySQL DATETIME අගයන් විවිධ ආකාරයන්හි ඇතුළත් කළ හැක. මූලික ආකාරය 'YYYY-MM-DD HH:MM:SS' වේ. උදාහරණයක් ලෙස:
INSERT INTO sample_table (event_time) VALUES ('2024-09-16 14:30:00');
පහත ආකාරයන්ද අනුමත වේ:
'YY-MM-DD HH:MM:SS': 2-අංක අවුරුද්දක් භාවිතා කරන ආකාරය.'YYYYMMDDHHMMSS': විභජක නොමැති ආකාරය.
උදාහරණයක්:
INSERT INTO sample_table (event_time) VALUES ('24-09-16 14:30:00');
INSERT INTO sample_table (event_time) VALUES (20240916143000);
මෙම ආකාරයන්හි ඇතුළත් කරන ලද දත්ත නිවැරදිව ගබඩා වේ. අවුරුද්ද 2-අංකයෙන් සඳහන් කරන්නේ නම්, '70-99' යනු 1970-1999 ලෙස, '00-69' යනු 2000-2069 ලෙස පරිවර්තනය වේ.
3.3 DATETIME අගයන් ලබා ගැනීම
DATETIME අගයන් ලබා ගැනීමේදී, MySQL ඒවා පෙරනිමි 'YYYY-MM-DD HH:MM:SS' ආකාරයෙන් පෙන්වයි. උදාහරණයක් ලෙස:
SELECT event_time FROM sample_table;
මෙම විමසුම DATETIME තීරුවේ අගයන් ප්රමිතිය ආකාරයෙන් පෙන්වයි.
4. භාගික තත්පර සමඟ වැඩ කිරීම
4.1 DATETIME නිරවද්යතාව
MySQL හි DATETIME අගයන් භාගික තත්පර ඇතුළත් කළ හැක. fsp විකල්පය භාවිතා කර නිරවද්යතාව නියම කළ හැකි අතර, 0 සිට 6 දක්වා අංක භාගික තත්පර සුරකින්න පුළුවන්. උදාහරණයක් ලෙස, 3 අංක භාගික තත්පර සමඟ තීරුවක් නිර්මාණය කිරීම:
CREATE TABLE precise_times (
event_time DATETIME(3)
);
මෙම උදාහරණයේ, event_time තීරුවට උපරිම 3 අංක භාගික තත්පර සුරකින්න හැකියාව ඇත.
4.2 භාගික තත්පර සමඟ අගයන් ඇතුළත් කිරීම
භාගික තත්පර ඇතුළත් DATETIME අගයක් ඇතුළත් කිරීමට, පහත පරිදි කරන්න:
INSERT INTO precise_times (event_time) VALUES ('2024-09-16 14:30:00.123');
.This query stores the value including fractional seconds accurately. The fractional part is stored without being truncated, and the precision is preserved when retrieving the value.

5. DATETIME සඳහා හොඳම ක්රියාමාර්ග
5.1 DATETIME සහ TIMESTAMP අතර තේරීම
DATETIMEභාවිතා කළ යුතු අවස්ථා : වේලාව කලාපයන්ට පරිභෝජනය නොවන ස්ථිර දිනය/වේලාවන් සඳහා (උදාහරණයක් ලෙස, සිදුවීම් ආරම්භක වේලාවන් හෝ වෙන්කිරීම් දිනයන්).TIMESTAMPභාවිතා කළ යුතු අවස්ථා : සේවාදායක කාලකලාපයට සම්බන්ධ දිනය/වේලාව දත්ත සඳහා (උදාහරණයක් ලෙස, ලේඛන නිර්මාණ හෝ යාවත්කාලීන ටයිම්ස්ටැම්ප්).
5.2 කාලකලාප කළමනාකරණය
DATETIME කාලකලාප තොරතුරු සුරකින්නේ නැති බැවින්, ඔබේ යෙදුම කාලකලාපයන් වෙනම කළමනාකරණය කළ යුතුය. එයට විරුද්ධව, TIMESTAMP අගයන් සුරකිද්දී සහ ලබා ගන්නා විට සේවාදායක කාලකලාපය ස්වයංක්රීයව ගණනය කරයි, එය ලෝක වශයෙන් විවිධ කාලකලාපයන්හි ක්රියා කරන පද්ධති සඳහා සුදුසු වේ.
6. පොදු දෝෂ සහ ඒවා වැලැක්වීමේ ක්රම
6.1 ශූන්ය දිනයන් සහ අවලංගු වටිනාකම්
MySQL හි, ඔබ අවලංගු DATETIME වටිනාකමක් ඇතුළත් කිරීමට උත්සාහ කළහොත්, '0000-00-00 00:00:00' වැනි ශූන්ය දිනයක් සුරැකිය හැක. මෙය සාමාන්යයෙන් වලංගු දිනයක් නොවන බැවින්, ඇතුළත් දත්ත වලංගු බව තහවුරු කිරීමෙන් අවලංගු වටිනාකම් ඇතුළත් වීම වැලැක්විය යුතුය. නිවැරදි පරාසය සහ ආකෘතියට අනුකූල බව තහවුරු කරන සත්යාපනයක් ක්රියාත්මක කිරීමෙන් ශූන්ය දිනයන් සුරැකීම වැළැක්විය හැක.
6.2 නිරවද්යතාවයේ අයුතු භාවිතය
භාගික තත්පර නිරවද්යතාවය නියම කරන විට, වැරදි නිරවද්යතාවයක් භාවිතා කිරීම අනපේක්ෂිත ප්රතිඵල ලබා දිය හැක. අවශ්ය වන විට පමණක් භාගික තත්පර නිරවද්යතාවය සකස් කර, fsp අගය අවධානයෙන් තෝරන්න. උදාහරණයක් ලෙස, ඔබේ යෙදුමට උප-තත්පර නිරවද්යතාවය අවශ්ය නොවේ නම්, DATETIME තීරුවකට භාගික තත්පර එක් කිරීම අවශ්ය නොවේ.
7. සාරාංශය
මෙම ලිපියේ, අපි MySQL හි DATETIME වර්ගය විස්තරාත්මකව පැහැදිලි කර ඇත. DATETIME දිනය සහ වේලාව දෙකම සුරැකීමට ඉතා ප්රයෝජනවත් දත්ත වර්ගයකි, එය කාලකලාපයන්ගෙන් බලපෑම නොලැබිය යුතු වටිනාකම් සුරැකීමට සුදුසු වේ. DATETIME සහ TIMESTAMP අතර වෙනස්කම්, කාලකලාප ක්රියාකාරිත්වය, සහ භාගික තත්පර භාවිතය පිළිබඳ අවබෝධයක් ඇතිවීමෙන්, ඔබේ දත්ත ගබඩාවේ දිනය/වේලාව දත්ත වඩා හොඳින් කළමනාකරණය කළ හැක. එමෙන්ම, පොදු දෝෂ සහ ඒවා වැලැක්වීමේ ක්රම දැන ගැනීමෙන් දත්ත සමගාමීතාවය සහ විශ්වාසනීයතාවය රැකගත හැක.
8. නිතර අසන ප්රශ්න (FAQ)
ප්ර.1: DATETIME සහ TIMESTAMP අතර ප්රධාන වෙනස කුමක්ද?
DATETIME කාලකලාපයන්ට පරිභෝජනය නොවන ස්ථිර දිනය සහ වේලාව සුරකිති. උදාහරණයක් ලෙස, වෙන්කිරීම් දිනයන් හෝ සිදුවීම් වේලාවන්, ඕනෑම කාලකලාපයකත් එකසේ රැඳී සිටිය යුතු වේලාවන් සුරැකීමට මෙය සුදුසු වේ. එයට විරුද්ධව, TIMESTAMP UTC ආකාරයෙන් සුරැකෙයි සහ ලබා ගන්නා විට සේවාදායක කාලකලාපයට පරිවර්තනය කරයි. එය සේවාදායක කාලකලාපයට පරිභෝජනය වන දිනය/වේලාව දත්ත, උදාහරණයක් ලෙස ලොග් ගොනු, සඳහා සුදුසු වේ.
ප්ර.2: DATETIME සමඟ භාගික තත්පර කෙසේ සුරකින්නද?
DATETIME තීරුව නිර්මාණය කරන විට fsp අගයක් නියම කිරීමෙන් භාගික තත්පර නිරවද්යතාවය සකස් කළ හැක. උදාහරණයක් ලෙස, DATETIME(3) භාගික තත්පර 3 අංක දක්වා සුරකිති. ඇතුළත් කිරීමේදී භාගික තත්පර ඇතුළත් නිවැරදි ආකෘතියේ වටිනාකම භාවිතා කරන්නේ නම්, එය නිවැරදිව සුරැකේ.
ප්ර.3: මට DATETIME හෝ TIMESTAMP භාවිතා කළ යුතුද?
ඔබේ භාවිතය අනුව වෙනස් වේ. ස්ථිර දිනය සහ වේලාව සුරැකීමට අවශ්ය නම් DATETIME භාවිතා කරන්න. සේවාදායක කාලකලාපයට පරිභෝජනය වන දිනය/වේලාව දත්ත, උදාහරණයක් ලෙස ලේඛන නිර්මාණ හෝ යාවත්කාලීන වේලාවන්, සඳහා TIMESTAMP භාවිතා කරන්න. TIMESTAMP ස්වයංක්රීය කාලකලාප පරිවර්තනය කරන බැවින්, ඔබේ පද්ධතිය විවිධ කාලකලාපයන් අතර ක්රියා කළ යුතු නම් මෙය සුදුසු වේ.


