MySQL වර්තමාන කාල සටහන: වර්තමාන දිනය සහ වේලාව ලබා ගැනීමේ ක්‍රම (NOW, SYSDATE, UTC_TIMESTAMP)

目次

1. Introduction

MySQL හි වත්මන් වේලාව ලබා ගැනීම යනු දත්ත ගබඩා කළමනාකරණයේ අත්‍යවශ්‍ය කොටසකි.
උදාහරණයක් ලෙස, ඔබට පහත සඳහන් තත්ත්වයන්හි වත්මන් වේලාව ලබා ගැනීමට අවශ්‍ය විය හැකිය:

  • දත්ත ඇතුළත් කරන විට ස්වයංක්‍රීයව නිර්මාණ ටයිම්ස්ටෑම්පයක් ලියා ගැනීම (උදා: නව පරිශීලකයෙකු ලියාපදිංචි වන විට ටයිම්ස්ටෑම්පයක්)
  • පරිශීලක ලොග් ඉන් වේලාවන් ලියා ගැනීම (උදා: ලොග් ඉන් ඉතිහාසය කළමනාකරණය)
  • නිශ්චිත කාල පරාසයක් තුළ දත්ත ලබා ගැනීම (උදා: පසුගිය 24 පැය තුළ ඇණවුම් ඉතිහාසය ලබා ගැනීම)
  • පද්ධති ක්‍රියාත්මක ලොග් ලියා ගැනීම (උදා: දෝෂ ලොග් සහ සිදුවීම් ලොග් කළමනාකරණය)

ඔබට දැකගත හැකි පරිදි, දත්ත කළමනාකරණය සහ ලොග් කිරීම සඳහා “වර්තමාන වේලාව” නිවැරදිව ලබා ගැනීම දත්ත ගබඩාව ක්‍රියාත්මක කිරීමේ අත්‍යවශ්‍ය කොටසකි.

මෙම ලිපියේ, MySQL හි වර්තමාන වේලාව ලබා ගැනීම පිළිබඳව සැබෑ SQL විමසුම් භාවිතා කරමින් විස්තරාත්මකව පැහැදිලි කරමු.
එසේම, සාමාන්‍යයෙන් භාවිතා වන ක්‍රියාකාරකම් අතර වෙනස්කම්, නිවැරදි ක්‍රියාකාරකම තෝරා ගැනීමේ ක්‍රම, සහ ප්‍රායෝගික විමසුම් උදාහරණ (ආරම්භකයන් සිට මධ්‍යම පරිශීලකයන් දක්වා) ආවරණය කරමු.

2. MySQL Functions to Get the Current Date/Time (Comparison Table)

MySQL වර්තමාන වේලාව ලබා ගැනීමට බහු ක්‍රියාකාරකම් ලබා දේ.
ඔබේ අවශ්‍යතාවයට සුදුසු ක්‍රියාකාරකම තෝරා ගැනීම වැදගත් වන අතර, බොහෝ අය අතර එම වෙනස්කම් ගැඹුරු ලෙස නොදැනේ.

මෙම කොටස තුළ, MySQL හි වර්තමාන දිනය/වේලාව ලබා ගැනීමට භාවිතා වන ප්‍රධාන ක්‍රියාකාරකම් අතර සංසන්දනය කර, ඒවායේ ලක්ෂණ විස්තරාත්මකව පැහැදිලි කරමු.

2.1 Comparison Table of MySQL Time Functions

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

ඉහත වගුවෙන් පෙනේනේ, බොහෝ ක්‍රියාකාරකම් “වර්තමාන දිනය සහ වේලාව” හෝ “වර්තමාන වේලාව” ලබා දෙන අතර, ඔබේ අරමුණ අනුව සුදුසුම ක්‍රියාකාරකම තෝරා ගැනීම වැදගත් වේ.

2.2 Overview and Characteristics of Each Function

NOW() Function

  • වර්තමාන දිනය සහ වේලාව ලබා ගැනීමට සාමාන්‍යතම ක්‍රියාකාරකම
  • SQL ප්‍රකාශය ආරම්භ වන මොහොතේ වේලාව ලබා දෙයි
  • දත්ත ඇතුළත් කිරීම හෝ යාවත්කාලීන කිරීමේදී ටයිම්ස්ටෑම්පයක් ලෙස බහුලව භාවිතා වේ
    SELECT NOW();
    

උදාහරණ ප්‍රතිඵල

2025-02-14 15:30:45

SYSDATE() Function

  • ක්‍රියාත්මක වන මොහොතේ වර්තමාන වේලාව ලබා ගනී
  • NOW() වලට වඩා, SYSDATE() ඇගයීමේදී වාරිකව වෙනස් විය හැක (එකම ගනුදෙනුව තුළත් වෙනස් විය හැක)
    SELECT SYSDATE();
    

උදාහරණ ප්‍රතිඵල

2025-02-14 15:30:47

CURTIME() Function

  • වේලාව (HH:MM:SS) පමණක් ලබා ගනී
  • දිනය අවශ්‍ය නොවන අවස්ථා සඳහා ප්‍රයෝජනවත් වේ
    SELECT CURTIME();
    

උදාහරණ ප්‍රතිඵල

15:30:45

CURRENT_TIME() Function

  • CURTIME() සමඟ සමාන ලෙස ක්‍රියා කරයි
  • SQL ප්‍රමිතියට අනුකූල ක්‍රියාකාරකම් නාමයයි
    SELECT CURRENT_TIME();
    

උදාහරණ ප්‍රතිඵල

15:30:45

CURRENT_TIMESTAMP() Function

  • NOW() වැනි ක්‍රියාකාරකමකි
  • තීරුවේ DEFAULT අගයක් ලෙස නියම කළ හැක (සාමාන්‍යයෙන් NOW() වෙනුවට DEFAULT සඳහා වඩා සුදුසු)
    SELECT CURRENT_TIMESTAMP();
    

උදාහරණ ප්‍රතිඵල

2025-02-14 15:30:45

තීරුවක් නිර්මාණය කරන විට පෙරනිමි අගයක් ලෙස සකස් කිරීම:

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

UTC_TIMESTAMP() Function

  • වර්තමාන UTC (සමන්විත සර්වලෝක වේලාව) ලබා ගනී
  • සේවාදායකයේ කාල කලාපය මත පදනම් නොවීම නිසා, සමාන්‍ය ටයිම්ස්ටෑම්ප සඳහා අඩංගු වේ
    SELECT UTC_TIMESTAMP();
    

උදාහරණ ප්‍රතිඵල

2025-02-14 06:30:45

2.3 Which Function Should You Use?

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()

සාමාන්‍යයෙන්, සාමාන්‍ය දිනය/වේලාව ලබා ගැනීමට NOW() බොහෝ විට සුදුසු තේරීම වේ.
කෙසේ වෙතත්, ඔබේ අවශ්‍යතාවය අනුව සුදුසුම ක්‍රියාකාරකම තෝරා ගැනීම දත්ත මෙහෙයුම් වඩාත් ස flexibil සහ විශ්වාසනීය කරයි.

3. NOW() Function Details

MySQL NOW() ක්‍රියාකාරකම වර්තමාන දිනය සහ වේලාව (දිනය + වේලාව) ලබා ගැනීමට අතිශය බහුලව භාවිතා වන ක්‍රියාකාරකම වේ.
එය දත්ත ගබඩාවේ ටයිම්ස්ටෑම්ප සුරැකීම සහ නිශ්චිත කාල පරාසයක් තුළ දත්ත ලබා ගැනීම සඳහා පුළුල්ව භාවිතා වේ.

3.1 Basic Usage of NOW()

Syntax of NOW()

SELECT NOW();

Example output

2025-02-14 15:30:45
  • ප්‍රතිදාන ආකෘතිය YYYY-MM-DD HH:MM:SS (අවුරුදු-මාස-දින පැය:මිනිත්තු:තත්පර).
  • කාලය MySQL හි පෙරනිමි කාලකලාප සැකසුම් මත ලබා ගනී.

3.2 Common Use Cases for NOW()

① Record the current time when inserting data

දත්ත ගබඩාවකට දත්ත ඇතුළත් කරන විට, NOW() භාවිතා කරමින් නිර්මාණ කාල සටහනක් සටහන් කළ හැක.

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 a certain time period

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
  • INTERVAL 1 DAY නියම කිරීමෙන්, “පසුගිය 1 දිනේ දත්ත” ලබා ගත හැක.

3.3 Return Type and How to Change the Output Format

Return type of NOW()

  • DATETIME වර්ගය (YYYY-MM-DD HH:MM:SS)
  • එය ස්ට්‍රින් ලෙසද සැලකිය හැක
    SELECT NOW(), typeof(NOW());
    

How to change the format

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

Example output

2025-02-14 15:30:45

3.4 Differences Between NOW() and 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();

Example output

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

🚨 ඔබ ගනුදෙනු (transaction) සමඟ වැඩ කරන්නේ නම්, සමාන්‍යතාවය සඳහා NOW() නිර්දේශ කරයි.

3.5 Limitations and Notes for NOW()

① Depends on the time zone

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

② For table default values, use CURRENT_TIMESTAMP

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

3.6 Summary of NOW()

  • NOW() MySQL හි වත්මන් දිනය සහ කාලය ලබා ගැනීමට භාවිතා වන සාමාන්‍යතම ක්‍රියාවලියයි.
  • එය ඇතුළත් කිරීම, යාවත්කාලීන කිරීම, සහ කාල-අධාරිත දත්ත ලබා ගැනීමට භාවිතා කළ හැක.
  • ගනුදෙනුවක් තුළ සමාන්‍ය තත්කාලීන සටහනක් අවශ්‍ය නම් NOW() භාවිතා කරන්න.
  • SYSDATE() සෑම වාරයක්ම වෙනස් කාලයක් ලබා දේ, එබැවින් නියම ක්‍රියාත්මක කාලය අවශ්‍ය නම් එය භාවිතා කරන්න.
  • වෙනත් කාලකලාපයක කාලය ලබා ගැනීමට CONVERT_TZ() භාවිතා කරන්න.

📌 නිගමනය: බොහෝ අවස්ථාවල, MySQL හි වත්මන් දිනය සහ කාලය ලබා ගැනීමට NOW() හොඳම තේරීමයි.

4. SYSDATE() Function Characteristics

SYSDATE() ක්‍රියාකාරකම MySQL හි වත්මන් දිනය සහ කාලය ලබා ගැනීමට වෙනත් ක්‍රමයක් වන අතර, එය NOW() වලට වඩා වෙනස් ලෙස ක්‍රියා කරයි.
මෙම කොටසේ, SYSDATE() හි මූලික භාවිතය, එය NOW() වලින් කෙසේ වෙනස්ද, සහ වැදගත් සටහන් පැහැදිලි කරමු.

4.1 What Is SYSDATE()?

SYSDATE() යනු ප්‍රකාශනය ක්‍රියාත්මක වන වේලාවේ කාලය ලබා දෙන ක්‍රියාකාරකමකි.
NOW() වලට වඩා, එය සෑම වාරයක්ම වෙනස් තත්කාලීන සටහනක් ලබා දේ.

SYSDATE() syntax

SELECT SYSDATE();

Example output

2025-02-14 16:00:45
  • YYYY-MM-DD HH:MM:SS ආකෘතියෙන් ලබා දේ
  • විමසුම ක්‍රියාත්මක වන මොහොත නියෝජනය කරයි

4.2 Differences Between SYSDATE() and NOW()

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

Behavior comparison: NOW() vs SYSDATE()

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

Example output

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

📌 ප්‍රධාන කරුණු

  • NOW() ප්‍රකාශනයේ ආරම්භයේ තත්කාලීන සටහන රඳවා ගනී, එබැවින් එය වෙනස් නොවේ.
  • SYSDATE() සෑම වාරයක්ම වෙනස් තත්කාලීන සටහන ලබා දේ, එබැවින් 3 තත්පරයකට පසු එය වෙනස් වේ.

🚨 ගනුදෙනු සැකසීම සඳහා NOW() භාවිතා කරන්න

  • SYSDATE() බහු-තන්තුව පරිසරයන්හි NOW() වලට වඩා වෙනස් ලෙස ක්‍රියා කළ හැකි බැවින්, ගනුදෙනු සමාන්‍යතාවය සඳහා සාමාන්‍යයෙන් NOW() නිර්දේශ කරයි.

4.3 SYSDATE() භාවිතා කිරීමේ උදාහරණ

① දත්ත ඇතුළත් කරන විට වත්මන් වේලාව ලියාගන්න

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

② දත්ත යාවත්කාලීන කරන විට වත්මන් වේලාව ලියාගන්න

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

③ විශේෂිත ආකෘතියකින් වත්මන් වේලාව ලබාගන්න

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

උදාහරණ ප්‍රතිඵල

2025-02-14 16:05:30

4.4 SYSDATE() සඳහා සීමා සහ සටහන්

① ගනුදෙනු හැසිරීම

  • NOW() ප්‍රකාශය ආරම්භ වූ වේලාවේ ටයිම්ස්ටෑම්පය රඳවා ගනී, එබැවින් ගනුදෙනුව තුළ සමාන්‍යව භාවිතා කළ හැක.
  • SYSDATE() සෑම වරක්ම වෙනස් ටයිම්ස්ටෑම්පයක් ලබා දෙයි, එබැවින් ගනුදෙනුව තුළ වේලාව අස්ථානගත විය හැක.

② පෙරනිමි (DEFAULT) අගයක් ලෙස භාවිතා කළ නොහැක

  • SYSDATE() වගුවේ තීරුවකට DEFAULT අගයක් ලෙස සකස් කළ නොහැක.

විසඳුම: DEFAULT CURRENT_TIMESTAMP භාවිතා කරන්න.

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

4.5 SYSDATE() කවදා භාවිතා කළ යුතුද?

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

🚀 SYSDATE() රියල්-ටයිම් ලොග් කිරීම සඳහා සුදුසුය, නමුත් ගනුදෙනු සැකසීම සඳහා සුදුසු නොවේ.

4.6 SYSDATE() සාරාංශය

  • SYSDATE() ක්‍රියාත්මක වන වේලාවේ ටයිම්ස්ටෑම්පය ලබා ගනී, NOW() වෙනුවට.
  • එය සෑම වරක්ම වෙනස් අගයන් ලබා දිය හැකි බැවින්, රියල්-ටයිම් ලොග් කිරීම සඳහා ප්‍රයෝජනවත් වේ.
  • ගනුදෙනු සමාන්‍යතාවය සඳහා, NOW() නිර්දේශ කරයි.
  • පෙරනිමි අගයන් සඳහා, CURRENT_TIMESTAMP භාවිතා කරන්න.

📌 නිගමනය: සාමාන්‍ය ටයිම්ස්ටෑම්ප ලබා ගැනීමට NOW() හොඳමයි; නිරවද්‍ය ක්‍රියාත්මක වේලාව සඳහා SYSDATE() තෝරන්න.

5. CURTIME() සහ CURRENT_TIME()

MySQL හි වත්මන් වේලාව ලබා ගැනීමට අවශ්‍ය වන විට, CURTIME() සහ CURRENT_TIME() වේලාව පමණක් (HH:MM:SS) අවශ්‍ය වන අවස්ථාවල භාවිතා වේ.
මෙම කොටසේ, අපි ඒවායේ මූලික භාවිතය, වෙනස්කම්, සහ ප්‍රායෝගික උදාහරණ පැහැදිලි කරමු.

5.1 CURTIME() යනු කුමක්ද?

CURTIME() යනු MySQL හි වර්තමාන වේලාව (පැය, මිනිත්තු, තත්පර) ලබා ගන්නා ක්‍රියාකාරකමකි.
එහි ප්‍රධාන ලක්ෂණය වන්නේ දිනය ඇතුළත් නොවීම—කෙවල වේලාව පමණක් ලබා දීම.

CURTIME() syntax

SELECT CURTIME();

උදාහරණ ප්‍රතිඵල

16:30:45
  • ආකෘතිය: HH:MM:SS
  • සේවාදායකයේ වේලා කලාප සැකසුම මත පදනම් වේ
  • NOW() වෙනුවට, දිනය අවශ්‍ය නොවන අවස්ථාවලට සුදුසුය

5.2 CURRENT_TIME() යනු කුමක්ද?

CURRENT_TIME() යනු CURTIME() මෙන්ම වර්තමාන වේලාව (HH:MM:SS) ලබා ගන්නා ක්‍රියාකාරකමකි.
ප්‍රායෝගිකව, එය CURTIME() සමඟ සම්පූර්ණයෙන්ම එකසේ ක්‍රියා කරයි.

CURRENT_TIME() syntax

SELECT CURRENT_TIME();

උදාහරණ ප්‍රතිඵල

16:30:45

📌 වෙනස්කම කුමක්ද?

  • CURTIME() MySQL සඳහා විශේෂිතය
  • CURRENT_TIME() SQL ප්‍රමිතියකි
  • ඔවුන් එකසේ ක්‍රියා කරයි
  • කියවීමට පහසුකම අනුව තෝරන්න (කාර්ය සාධනයේ වෙනසක් නැත)

5.3 CURTIME() vs CURRENT_TIME() (Comparison)

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 CURTIME() / CURRENT_TIME() ප්‍රායෝගික උදාහරණ

① දත්ත ඇතුළත් කරන විට වත්මන් වේලාව ලියාගන්න

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

② ෆිල්ටරින් (විශේෂිත වේලාව පරාසයක් තුළ දත්ත ලබා ගැනීම)

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

③ නිරවද්‍යතාව වෙනස් කිරීම (මිලිසෙකන්ඩ් ඇතුළත් කිරීම)

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

උදාහරණ ප්‍රතිඵල

16:30:45.123

5.5 CURTIME() / CURRENT_TIME() සඳහා සීමා සහ සටහන්

① දිනය නොමැති බැවින්, අවශ්‍ය විට දිනය සමඟ එකතු කරන්න

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

② පෙරනිමි (DEFAULT) අගයක් ලෙස භාවිතා කිරීමේදී

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

5.6 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)

📌 බොහෝ අවස්ථාවලදී, CURTIME() හෝ CURRENT_TIME() එකක් හෝ හොඳින් ක්‍රියා කරයි.
ඔබට වඩා පාඨ පෙනෙන එක තෝරන්න.

5.7 CURTIME() / CURRENT_TIME() සාරාංශය

  • CURTIME() MySQL-විශේෂිතයි; CURRENT_TIME() SQL-මාන්ඩර්ධය
  • දෙකම වර්තමාන කාලය (HH:MM:SS) ලබා ගනී
  • CURTIME(3) හෝ DATE_FORMAT() භාවිතා කරන්න ආකෘතිය/නිරවද්‍යතාවය සකස් කිරීමට
  • ඔබට දිනයක් අවශ්‍ය නම්, CURDATE() සමඟ සංයෝජනය කරන්න හෝ NOW() භාවිතා කරන්න
  • ප්‍රමාණාගත වලට, CURRENT_TIMESTAMP සාමාන්‍යයෙන් භාවිතා වේ

📌 නිගමනය: ඔබට වර්තමාන කාලය පමණක් අවශ්‍ය නම්, CURTIME() දෘඩ තේරීමකි.

6. වර්තමාන කාලය භාවිතා කරමින් ප්‍රායෝගික ප්‍රශ්න උදාහරණ

දැන් ඔබ MySQL හි වර්තමාන කාලය ලබා ගන්නේ කෙසේදැයි තේරුම් ගත්තාට පසු, එය භාවිතා කිරීමේ ප්‍රායෝගික ක්‍රම බලමු.
මෙම කොටසේදී, අපි වර්තමාන කාලය භාවිතා කරමින් සැබෑ-ලෝක ප්‍රශ්න උදාහරණ හඳුන්වා දෙන්නෙමු.
ඔබට ඇතුළත් කිරීම්, යාවත්කාලීන කිරීම් සහ සෙවීම් වැනි දිනපතා දත්තගබඩා කාර්යයන් සඳහා භාවිතා වන තාක්ෂණයන් ඉගෙන ගැනීමට අවස්ථාව ලැබෙනු ඇත.

6.1 දත්ත ඇතුළත් කිරීමේදී වර්තමාන කාලය වාර්තා කිරීම

① පරිශීලකයෙකු ලියාපදිංචි වන විට වර්තමාන කාලය වාර්තා කිරීම

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

6.2 දත්ත යාවත්කාලීන කිරීමේදී වර්තමාන කාලය වාර්තා කිරීම

② පරිශීලකයාගේ අන්තිම ලොගින් කාල ස්ථිරංකනය වාර්තා කිරීම

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

6.3 අතීත N දිනවලින් දත්ත ලබා ගැනීම

③ අතීත 7 දිනවලින් ඇණවුම් දත්ත ලබා ගැනීම

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

6.4 නිශ්චිත කාල පරාසයක් තුළ නිර්මාණය කළ දත්ත ලබා ගැනීම

④ අද 9:00 AM සහ 6:00 PM අතර නිර්මාණය කළ දත්ත ලබා ගැනීම

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

6.5 කාල කලාප සලකා බලමින් වර්තමාන කාලය ලබා ගැනීම

⑤ UTC කාලය ජපාන කාලයට (JST) පරිවර්තනය කිරීම

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

6.6 ප්‍රමාණාගතව වර්තමාන කාල ස්ථිරංකනයට වාර්තා නිර්මාණ කාලය සකස් කිරීම

⑥ created_at ස්වයංක්‍රීයව වර්තමාන කාල ස්ථිරංකනයට සකස් කිරීම

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

6.7 නිශ්චිත කාල ප්‍රමාණයකට පසු දත්ත මකා දැමීම

⑦ 30 දිනකට වැඩි පැරණි දත්ත මකා දැමීම

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

6.8 මිලිසෙකන්ඩ් (මයික්‍රොසෙකන්ඩ්) නිරවද්‍යතාවය සහිත වර්තමාන කාලය ලබා ගැනීම

⑧ මිලිසෙකන්ඩ් නිරවද්‍යතාවය සහිත වර්තමාන කාල ස්ථිරංකනය ලබා ගැනීම

SELECT NOW(3);

උදාහරණ ප්‍රතිදානය

2025-02-14 16:30:45.123

6.9 භාවිත-අවස්ථා තේරීම් මාර්ගෝපදේශය

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 සාරාංශය

  • NOW() මූලික වර්තමාන කාල ස්ථිරංකනය ලබා ගැනීම සකරයි
  • CURTIME() සහ CURRENT_TIME() කාලය පමණක් අවශ්‍ය වන විට භාවිතා වේ
  • ඔබට කාල-අනුවර්තන ප්‍රශ්න, කාල-අවස්ථාවෙන් පෙරාලිම, සහ මිලිසෙකන්ඩ් නිරවද්‍යතාවය සහිත කාල ස්ථිරංකන සඳහා වර්තමාන කාලය භාවිතා කළ හැක
  • කාල ස්ථිරංකන කාල කලාප මත රඳා පවතින බැවින්, නිවැරදි කාලය ලබා ගැනීමට CONVERT_TZ() භාවිතා කරන්න
  • දත්තගබඩා ප්‍රමාණය කළමනාකරණය සඳහා, පැරණි දත්ත ස්වයංක්‍රීයව මකා දැමීමේ යාන්ත්‍රණයක් නිර්මාණය කිරීමද වැදගත්

📌 නිගමනය: වර්තමාන කාලය ඵලදායී ලෙස භාවිතා කිරීම MySQL හි දත්ත කළමනාකරණය වඩාත් කාර්යක්ෂමව කිරීමට උපකාරී වේ.

7. FAQ (පොදු ප්‍රශ්න)

මෙහි MySQL හි වර්තමාන කාලය ලබා ගන්නේ කෙසේද යන්න පිළිබඳ පොදු ප්‍රශ්න (FAQ) ඇතුළත් වේ.
එක් එක් ප්‍රශ්නයට පැහැදිලි සහ සංක්ෂිප්තව පිළිතුරු ලබා දී ඇත.

7.1 NOW() සහ SYSDATE() අතර වෙනස කුමක්ද?

පිළිතුර

NOW() සහ SYSDATE() දෙකම වර්තමාන දිනය සහ කාලය ලබා ගනී, නමුත් ඒවා වටිනාකම තක්සේරු කරන විට වෙනස් වේ.

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

පරීක්ෂණ උදාහරණය

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

උදාහරණ ප්‍රතිදානය

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

🚨 ලෙන තත්ත්ව ක්‍රියාවලිය සඳහා, NOW() සාමාන්‍යයෙන් නිර්දේශ කෙරේ.

7.2 CURRENT_TIMESTAMP() සහ NOW() එකමද?

Answer

ඔවුන් ඉතා සමාන ලෙස ක්‍රියා කරයි, නමුත් CURRENT_TIMESTAMP() DEFAULT අගයක් ලෙස භාවිතා කළ හැක.

Example when creating a table

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

7.3 විශේෂිත කාල කලාපයක වත්මන් වේලාව ලබා ගැනීමට මට කෙසේද?

Answer

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

7.4 වත්මන් වේලාව ස්වයංක්‍රීයව සටහන් කිරීමට මට කෙසේද?

Answer

වගුවක් සාදන විට, DEFAULT CURRENT_TIMESTAMP නියම කර created_at හි වත්මන් වේලාව ස්වයංක්‍රීයව සුරකින්න.

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

7.5 පසුගිය N දිනවල දත්ත ලබා ගැනීමට මට කෙසේද?

Answer

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

7.6 මිලිසෙකන්ඩ් (මයික්‍රොසෙකන්ඩ්) නිරවද්‍යතාවය සමඟ වත්මන් වේලාව ලබා ගැනීමට මට කෙසේද?

Answer

SELECT NOW(3);

Example output

2025-02-14 16:30:45.123

7.7 Summary

  • NOW() සහ SYSDATE() ඇගයීමේ කාලය වෙනස් වේ
  • CURRENT_TIMESTAMP() DEFAULT අගයක් ලෙස භාවිතා කළ හැක
  • වෙනත් කාල කලාපවලට ටයිම්ස්ටැම්ප් ලබා ගැනීමට CONVERT_TZ() භාවිතා කරන්න
  • නිර්මාණ ටයිම්ස්ටැම්ප් ස්වයංක්‍රීයව සටහන් කිරීමට DEFAULT CURRENT_TIMESTAMP භාවිතා කරන්න
  • පසුගිය X දිනවල දත්ත ලබා ගැනීමට NOW() - INTERVAL X DAY භාවිතා කරන්න
  • NOW(3) හෝ NOW(6) මිලිසෙකන්ඩ්/මයික්‍රොසෙකන්ඩ් නිරවද්‍යතාවය සහිත ටයිම්ස්ටැම්ප් ලබා දෙයි

📌 නිගමනය: වත්මන් ටයිම්ස්ටැම්ප් සමඟ වැඩ කිරීම සඳහා නිවැරදි MySQL කාල ක්‍රියාකාරකම තෝරා ගැනීම අත්‍යවශ්‍ය වේ.

8. Summary

මෙම ලිපියේ, MySQL හි වත්මන් වේලාව ලබා ගැනීමේ ක්‍රම විස්තර කර ඇත.
NOW() ක්‍රියාකාරකම මත අවධානය යොමු කර, සමාන ක්‍රියාකාරකම් අතර වෙනස්කම්, ප්‍රායෝගික විමසුම් උදාහරණ, සහ වැදගත් සටහන් ආවරණය කර ඇත.

8.1 වත්මන් වේලාව ලබා ගැනීමට ප්‍රධාන MySQL ක්‍රියාකාරකම්

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

📌 නිගමනය:

  • සාමාන්‍ය වත්මන් ටයිම්ස්ටැම්ප් ලබා ගැනීමට, NOW() සාමාන්‍යයෙන් හොඳම තේරීම වේ.
  • නිවැරදි ක්‍රියාත්මක කාලය අවශ්‍ය නම්, SYSDATE() භාවිතා කරන්න.
  • දිනකාලය නොව කාලය පමණක් අවශ්‍ය නම්, CURTIME() තෝරන්න.

8.2 වත්මන් වේලාව භාවිතා කරන ප්‍රායෝගික විමසුම්

දත්ත ඇතුළත් කිරීමේදී වත්මන් වේලාව සටහන් කිරීම

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

දත්ත යාවත්කාලීන කිරීමේදී වත්මන් වේලාව සටහන් කිරීම

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

පසුගිය 7 දිනවල දත්ත ලබා ගැනීම

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

කාල කලාපය සැලකිල්ලට ගෙන වේලාව ලබා ගැනීම

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

30 දිනට පරණ පරණ දත්ත මකා දැමීම

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

8.3 කාල කලාප සම්බන්ධ සටහන්

  • MySQL NOW() පෙරනිමි කාල කලාප සැකසුම මත පදනම් වේ, එනිසා පරිසරයන් අතර ප්‍රතිඵල වෙනස් විය හැක.
  • වෙනත් කාල කලාපයකට ටයිම්ස්ටැම්ප් ලබා ගැනීමට CONVERT_TZ() භාවිතා කරන්න.
  • සේවාදායක කාල කලාපය වෙනස් කිරීමට:
    SET GLOBAL time_zone = 'Asia/Tokyo';
    

8.4 MySQL වත්මන් කාල ක්‍රියාකාරකම් පිළිබඳ FAQ

Q1. NOW() සහ SYSDATE() අතර වෙනස කුමක්ද?

NOW() විමසුම් ආරම්භයේ වේලාව ලබා දේ, SYSDATE() ක්‍රියාත්මක වන විට වේලාව ලබා දේ.

Q2. CURRENT_TIMESTAMP() සහ NOW() එකමද?

➡ ඒවා ඉතා සමාන, නමුත් CURRENT_TIMESTAMP() DEFAULT අගයක් ලෙස භාවිතා කළ හැක.

Q3. මිලිසෙකන්ඩ් (මයික්‍රොසෙකන්ඩ්) නිරවද්‍යතාවය සමඟ වත්මන් වේලාව ලබා ගැනීමට මට කෙසේද?

NOW(3) (මිලිසෙකන්ඩ්) හෝ NOW(6) (මයික්‍රොසෙකන්ඩ්) භාවිතා කරන්න.

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

8.5 Summary

  • MySQL හි, වත්මන් කාලය සඳහා නිවැරදි ෆන්ක්ෂන් එකක් තෝරා ගැනීම වැදගත් වේ .
  • සාමාන්‍ය අවස්ථා සඳහා NOW() භාවිතා කරන්න, සහ නිවැරදි ක්‍රියාත්මක කිරීමේ කාල සලකුණු අවශ්‍ය වන විට SYSDATE() .
  • කාලය පමණක් සඳහා CURTIME() භාවිතා කරන්න, සහ කාල කලාප පරිවර්තනය සඳහා CONVERT_TZ() .
  • ඇතුළත් කිරීම්, යාවත්කාලීන කිරීම්, සෙවීම්, සහ මකුණු කිරීම් තුළින් වත්මන් කාලය භාවිතා කළ හැක .

📌 නිගමනය: MySQL කාල ෆන්ක්ෂන් ප්‍රබලව භාවිතා කරන්න ඩේටා කළමනාකරණය වඩා කාර්යක්ෂමව කිරීමට.