1. හැඳින්වීම
BETWEEN මෙහෙයුම්කරු MySQL හි සරල විමසුමක් භාවිතා කර නියමිත දිනය පරාසයක් තුළ දත්ත ලබා ගැනීමට ඉඩ සලසන සුළු පහසුකමකි. උදාහරණයක් ලෙස, මාසික විකුණුම් දත්ත ලබා ගැනීම හෝ ලියාපදිංචි දිනයන් නියමිත කාලයක් තුළ පවතින පරිශීලකයන් සොයා ගැනීමේදී මෙය ප්රයෝජනවත් වේ.
BETWEEN භාවිතා කරන විට, DATE සහ DATETIME වැනි දත්ත වර්ගයන් කෙසේ හසුරවන්නේද, සහ කාර්ය සාධන ගැටළු ඇති විය හැකිද යන කරුණු පිළිබඳ අවධානය යොමු කළ යුතුය. මෙම ලිපියේ අපි මූලික භාවිතය සිට උසස් තාක්ෂණික ක්රමවලට සියල්ල විස්තර කරමු.
2. MySQL BETWEEN මෙහෙයුම්කරුගේ මූලික කරුණු
2.1 BETWEEN හි මූලික ව්යවස්ථාව
BETWEEN මෙහෙයුම්කරු නියමිත පරාසයක් තුළ අගයන් ලබා ගැනීමට භාවිතා වේ. එහි මූලික ව්යවස්ථාව පහත පරිදි වේ:
SELECT * FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-01-31';
මෙම විමසුම order_date 2024 ජනවාරි 1 සිට 2024 ජනවාරි 31 දක්වා දත්ත ලබා ගනී. වැදගත් කරුණක් වන්නේ BETWEEN ආරම්භක දිනය සහ අවසන් දිනය දෙකම ඇතුළත් කරයි යන්නයි.
2.2 BETWEEN vs. සංසන්දන මෙහෙයුම්කරු (>= AND <=)
එම ප්රතිඵලය ලබා ගැනීමට, >= සහ <= වැනි සංසන්දන මෙහෙයුම්කරුද එකට භාවිතා කළ හැකිය.
SELECT * FROM orders
WHERE order_date >= '2024-01-01' AND order_date <= '2024-01-31';
BETWEEN හි වාසි:
- ඉතා සරල ව්යවස්ථාව, උසස් කියවීමේ හැකියාව
>= AND <= හි වාසි:
- පරාස කොන්දේසි (උදා. විශේෂිත වේලාවන් බැහැර කිරීම) වඩා නිරවද්ය ලෙස පාලනය කළ හැකිය
උදාහරණයක් ලෙස, DATETIME තීරුවක BETWEEN භාවිතා කරන විට, වේලාව තොරතුරු ඇතුළත් කිරීමෙන් අනපේක්ෂිත දත්ත ලබා ගත හැකිය. මෙම කරුණ අපි ඊළඟ කොටසෙහි විස්තර කරමු.
3. BETWEEN භාවිතා කරන විට සැලකිලිමත් විය යුතු වැදගත් කරුණු
3.1 වේලාව තොරතුරු ඇතුළත් තීරු හසුරවීම
DATETIME තීරුවක BETWEEN භාවිතා කිරීමෙන් අනපේක්ෂිත ප්රතිඵල ලැබිය හැකිය.
SELECT * FROM users
WHERE created_at BETWEEN '2024-01-01' AND '2024-01-31';
මෙම විමසුමේදී 2024-01-31 00:00:00 දක්වා දත්ත පමණක් ලබා ගනී, එනම් ජනවාරි 31 මැදියම් පසු නිර්මාණය වූ ලේඛන බැහැර කරයි.
3.2 දිනය පරාස නියම කිරීමේ නිවැරදි ක්රමය
මෙම ගැටලුව විසඳීමට, ඊළඟ දිනයට වඩා අඩු ලෙස අවසන් දිනය සකස් කිරීම යනු ප්රභාවී ක්රමයකි.
SELECT * FROM users
WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01';
>= සහ < මෙසේ භාවිතා කිරීමෙන් ජනවාරි 31 දිනය පුරා සියලු ලේඛන විශ්වාසයෙන් ලබා ගත හැකිය. 
4. BETWEEN සහ කාර්ය සාධන අ优化ය
4.1 ඉන්ඩෙක්ස් සහ BETWEEN අතර සම්බන්ධතාවය
ඉදිරිපත් කරන ඉන්ඩෙක්ස් නිසි ලෙස සකස් කර ඇති විට BETWEEN මෙහෙයුම්කරු කාර්යක්ෂමව ක්රියා කරයි. එ obstante, DATE() ක්රියාවලිය භාවිතා කරන විට ඉන්ඩෙක්ස් භාවිතා නොවිය හැකි බැවින් අවධානයෙන් සිටිය යුතුය.
-- Index will not be used (not recommended)
SELECT * FROM users
WHERE DATE(created_at) BETWEEN '2024-01-01' AND '2024-01-31';
නිර්දේශිත විමසුම:
SELECT * FROM users
WHERE created_at >= '2024-01-01' AND created_at < '2024-02-01';
4.2 EXPLAIN භාවිතා කර විමසුම් අ优化ය
කාර්ය සාධනය තහවුරු කිරීම සඳහා EXPLAIN විධානය භාවිතා කිරීම ප්රයෝජනවත් වේ.
EXPLAIN SELECT * FROM users WHERE created_at BETWEEN '2024-01-01' AND '2024-01-31';
මෙම ක්රියාවලිය භාවිතා කරන ඉන්ඩෙක්ස් සහ ක්රියාත්මක සැලැස්ම පරීක්ෂා කිරීමට ඉඩ සලසයි.
5. පොදු වැරදි සහ ඒවා සකස් කිරීමේ ක්රම
5.1 BETWEEN සමඟ අනපේක්ෂිත පරාසයක් ලබා ගැනීම
BETWEEN භාවිතා කරන විට, වේලාව තොරතුරු නොසලකා හරිනු ඇතැයි සිතූ විට, අනපේක්ෂිත දත්ත ඇතුළත් වීම හෝ බැහැර වීම සිදු විය හැකිය. හොඳම ක්රමය ලෙස >= සහ < එකට එකතු කිරීම යෝජනා කරයි.
5.2 ඉන්ඩෙක්ස් අක්රිය කරන විමසුම්
DATE() හෝ CAST() වැනි ක්රියාවලීන් භාවිතා කරන කොන්දේසි ඉන්ඩෙක්ස් භාවිතය අක්රිය කරයි. හැකි තරම්, වටිනාකම් සෘජුවම සංසන්දනය කිරීම සඳහා විමසුම නැවත ලියන්න යන්න ප්රාථමික වේ.
6. නිතර අසන ප්රශ්න (FAQ)
Q1: BETWEEN ආරම්භක දිනය සහ අවසන් දිනය දෙකම ඇතුළත් කරද?
→ ඔව්, BETWEEN නිර්දේශිත පරාසයේ දෙකම සීමා ඇතුළත් කරයි.
Q2: මට BETWEEN භාවිතා කළ යුතුද, නැතහොත් >= AND <= භාවිතා කළ යුතුද?
→ BETWEEN භාවිතා කරන්න සරල පරාස කොන්දේසි සඳහා. කාල තොරතුරු සලකා බැලීමට අවශ්ය නම්, >= AND < යොදා ගැනීමට නිර්දේශ කරයි.
Q3: BETWEEN භාවිතා කිරීමක් විමසුමක් මන්දගාමී කරදිය හැදේද?
→ DATE() හෝ CAST() වැනි ක්රියාකාරකම් භාවිතා කරනවා නම්, සුචක (index) භාවිතා නොවිය හැක. සෘජු සසඳුම් භාවිතා කිරීම නිර්දේශ කරයි.
7. සැබෑ ලෝක භාවිතය සඳහා ප්රායෝගික නියැදි විමසුම්
7.1 නියමිත මාසයක් සඳහා දත්ත ලබා ගැනීම
WHERE created_at BETWEEN '2024-02-01' AND '2024-02-28';
7.2 අද දිනයේ දත්ත ලබා ගැනීම
WHERE created_at BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY;
7.3 පසුගිය 30 දිනවල දත්ත ලබා ගැනීම
WHERE created_at BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE();
8. සාරාංශය
BETWEENමෙහෙයුම දින පරාසයන් සරලව නියම කිරීමට ඉඩ සලසයි, නමුත්DATETIMEවර්ගයන් සලකා බැලීමේදී අතිරේක අවධානය අවශ්ය වේ.BETWEENආරම්භක සහ අවසන් දිනයන් දෙකම ඇතුළත් කරයි, එබැවින් නිවැරදි පරාස නියම කිරීම අත්යවශ්ය වේ.- කාර්ය සාධන අභිලක්ෂණ සඳහා සුචක (index) භාවිතය අත්යවශ්ය වේ, සහ
DATE()ක්රියාකාරකම භාවිතා කිරීමෙන් වැළකිය යුතුය. >= AND <භාවිතා කිරීම වඩා විශ්වාසනීය පරාස නියම කිරීම සලසයි.
MySQL හි BETWEEN මෙහෙයුම භාවිතා කිරීමේ ප්රධාන කරුණු පිළිබඳ අපගේ විස්තරය මෙහි අවසන් වේ. සැබෑ ලෝක සංවර්ධනයේ ඔබට මෙය උපකාරී වේ යැයි අපි බලාපොරොත්තු වෙමු!


