- 1 ১. পরিচিতি
- 2 ২. MySQL তারিখ/সময় ডেটা টাইপের ওভারভিউ
- 3 3. DATETIME এবং TIMESTAMP এর পার্থক্য
- 4 4. MySQL তারিখ/সময় ফাংশনের মৌলিক বিষয়
- 5 5. তারিখ ফরম্যাটিং এবং রূপান্তর পদ্ধতি
- 6 6. তারিখ গণনা ও তুলনা
১. পরিচিতি
MySQL একটি ব্যাপকভাবে ব্যবহৃত ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা ওয়েব অ্যাপ্লিকেশন ও ডেটাবেস তৈরি করতে ব্যবহৃত হয়, এবং তারিখ ডেটা সঠিকভাবে হ্যান্ডল করা বিশেষভাবে গুরুত্বপূর্ণ। উদাহরণস্বরূপ, তারিখ-সংক্রান্ত ডেটা বিভিন্ন পরিস্থিতিতে দেখা যায়: ব্লগ পোস্ট পরিচালনা, পণ্যের বিক্রয় ইতিহাস ট্র্যাক করা, এবং ব্যবহারকারীর লগইন ইতিহাস সংরক্ষণ। তারিখ ডেটা সঠিকভাবে পরিচালনা করে আপনি ডেটা দক্ষতার সঙ্গে প্রক্রিয়া করতে পারেন এবং ব্যবহারকারীদের সঠিক তথ্য প্রদান করতে পারেন।
এই গাইডে আমরা মৌলিক তারিখ/সময় ডেটা টাইপ এবং MySQL-এ তারিখ ফাংশন কীভাবে ব্যবহার করবেন থেকে শুরু করে তারিখ-ভিত্তিক গণনা এবং রেঞ্জ কুয়েরি পর্যন্ত সবকিছু বিস্তৃতভাবে ব্যাখ্যা করব। এই বিষয়বস্তুটি শুরুকারী থেকে মধ্যম স্তরের ব্যবহারকারীদের জন্য ডিজাইন করা হয়েছে, এবং আমরা বাস্তবিক কুয়েরি উদাহরণগুলো বাস্তব জগতের ব্যবহার কেসের উপর ভিত্তি করে অন্তর্ভুক্ত করব—যা দৈনন্দিন কাজের জন্য উপকারী।
এই নিবন্ধটি পড়ে আপনি নিম্নলিখিত কাজগুলো করতে সক্ষম হবেন:
- MySQL তারিখ/সময় ডেটা টাইপের বৈশিষ্ট্যগুলো বুঝে আপনার ডেটার জন্য উপযুক্ত টাইপ নির্বাচন করা।
- তারিখ ফাংশন ব্যবহার করে বর্তমান তারিখ, অতীতের তারিখ এবং ভবিষ্যৎ তারিখ সহজে পুনরুদ্ধার ও পরিবর্তন করা।
- নির্দিষ্ট সময়সীমার জন্য ডেটা বের করা, তারিখ রেঞ্জ অনুসন্ধান ও তুলনা করা।
এখন, পরবর্তী অংশ থেকে MySQL তারিখের মৌলিক বিষয়গুলো দেখি।
২. MySQL তারিখ/সময় ডেটা টাইপের ওভারভিউ
MySQL-এ তারিখ পরিচালনা করার সময়, ডেটা ও ব্যবহার কেসের উপর নির্ভর করে সঠিক তারিখ/সময় ডেটা টাইপ নির্বাচন করা গুরুত্বপূর্ণ। MySQL তারিখ ও সময় হ্যান্ডল করার জন্য একাধিক ডেটা টাইপ প্রদান করে, প্রতিটি ভিন্ন বৈশিষ্ট্য ও ব্যবহার পদ্ধতি সহ। এই অংশে আমরা প্রধান তারিখ/সময় টাইপ এবং তাদের সাধারণ ব্যবহার কেসগুলো বিশদভাবে ব্যাখ্যা করব।
DATE
DATE টাইপ শুধুমাত্র তারিখ (বছর, মাস, দিন) সংরক্ষণ করে এবং সময় উপাদান অন্তর্ভুক্ত করে না। সমর্থিত রেঞ্জ হল “1000-01-01” থেকে “9999-12-31” পর্যন্ত, তাই এটি বছর 1000 থেকে 9999 পর্যন্ত তারিখ হ্যান্ডল করতে পারে। এটি এমন তথ্যের জন্য উপযুক্ত যেখানে সময় প্রাসঙ্গিক নয়, যেমন জন্মদিন বা বার্ষিকী।
CREATE TABLE users (
id INT,
name VARCHAR(50),
birth_date DATE
);
TIME
TIME টাইপ সময় (ঘণ্টা, মিনিট, সেকেন্ড) সংরক্ষণ করে। সমর্থিত রেঞ্জ হল “-838:59:59” থেকে “838:59:59” পর্যন্ত। কারণ এটি নেগেটিভ সময়ও উপস্থাপন করতে পারে, তাই এটি সময় পার্থক্য প্রকাশের জন্যও ব্যবহার করা যায়। এটি কাজের সময় বা টাস্কের সময়কাল রেকর্ড করার জন্য উপযোগী।
CREATE TABLE work_log (
id INT,
task_name VARCHAR(50),
duration TIME
);
DATETIME
DATETIME টাইপ তারিখ ও সময় উভয়ই সংরক্ষণ করে। সমর্থিত রেঞ্জ হল “1000-01-01 00:00:00” থেকে “9999-12-31 23:59:59” পর্যন্ত। এটি টাইমজোনের উপর নির্ভরশীল নয়, এবং সংরক্ষিত মানটি ঠিক যেমন সংরক্ষিত হয়েছে তেমনই পুনরুদ্ধার করা যায়। এটি অতীতের ইভেন্টের টাইমস্ট্যাম্প বা ভবিষ্যৎ শিডিউল রেকর্ড করার জন্য উপযুক্ত।
CREATE TABLE appointments (
id INT,
description VARCHAR(50),
appointment_datetime DATETIME
);
TIMESTAMP
TIMESTAMP টাইপ তারিখ ও সময় সংরক্ষণ করে এবং স্বয়ংক্রিয়ভাবে সার্ভারের টাইমজোনের ভিত্তিতে মান রূপান্তর করে। সমর্থিত রেঞ্জ হল “1970-01-01 00:00:01 UTC” থেকে “2038-01-19 03:14:07 UTC” পর্যন্ত। এটি ইউনিক্স epoch সময়ের সাথে সামঞ্জস্যপূর্ণ এবং টাইমস্ট্যাম্প ও পরিবর্তন ইতিহাস রেকর্ড করার জন্য উপযুক্ত। এছাড়াও, TIMESTAMP ডিফল্টভাবে বর্তমান সময় সেট করতে পারে, ফলে তৈরি ও আপডেট সময় স্বয়ংক্রিয়ভাবে রেকর্ড করা সুবিধাজনক হয়।
CREATE TABLE posts (
id INT,
title VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
YEAR
YEAR টাইপ শুধুমাত্র বছর সংরক্ষণ করে। সমর্থিত রেঞ্জ হল “1901” থেকে “2155” পর্যন্ত। এটি নির্দিষ্ট বছর উপস্থাপন করার সময় উপযোগী, যেমন উৎপাদন বছর বা প্রতিষ্ঠার বছর।
CREATE TABLE products (
id INT,
name VARCHAR(50),
manufactured_year YEAR
);
প্রতিটি তারিখ/সময় টাইপের তুলনা ও ব্যবহার কেস
| Data Type | Stored Value | Range | Typical Use Cases |
|---|---|---|---|
| DATE | Year, month, day | 1000-01-01 ~ 9999-12-31 | Birthdays, anniversaries, etc. |
| TIME | Hour, minute, second | -838:59:59 ~ 838:59:59 | Working time, task duration |
| DATETIME | Year, month, day, hour, minute, second | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | Schedules, event timestamps |
| TIMESTAMP | Year, month, day, hour, minute, second | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC | Created/updated times, automatic tracking |
| YEAR | Year | 1901 ~ 2155 | Manufacturing year, founding year |
সারাংশ
MySQL তারিখ/সময় ডেটা টাইপগুলি আপনার ডেটার বৈশিষ্ট্য এবং আপনি কীভাবে এটি ব্যবহার করতে চান তার ভিত্তিতে নির্বাচন করা উচিত। পরবর্তী অংশে, আমরা DATETIME এবং TIMESTAMP এর পার্থক্যগুলোকে আরও ঘনিষ্ঠভাবে দেখব, যেগুলি বিশেষভাবে বিভ্রান্তিকর হতে পারে।

3. DATETIME এবং TIMESTAMP এর পার্থক্য
MySQL-এ তারিখ ও সময় নিয়ে কাজ করার সময়, DATETIME এবং TIMESTAMP সাধারণত ব্যবহৃত হয়, তবে এদের মধ্যে গুরুত্বপূর্ণ পার্থক্য রয়েছে। উভয়ই বছর, মাস, দিন, ঘন্টা, মিনিট এবং সেকেন্ড সংরক্ষণ করে, তবে সময় অঞ্চল পরিচালনা এবং সংরক্ষণযোগ্য সময় সীমার ক্ষেত্রে তারা ভিন্ন। আপনার ব্যবহারের ক্ষেত্রে অনুযায়ী নির্বাচন করা উচিত। এই অংশে, আমরা DATETIME এবং TIMESTAMP এর পার্থক্য এবং বৈশিষ্ট্যগুলো বিস্তারিতভাবে ব্যাখ্যা করব।
DATETIME এর বৈশিষ্ট্য
- সময় অঞ্চলের উপর নির্ভরশীল নয় :
DATETIMEটাইপ সার্ভারের সময় অঞ্চল সেটিং দ্বারা প্রভাবিত হয় না। আপনি সংরক্ষিত মানটি ঠিক যেমন সংরক্ষিত হয়েছে তেমনই পুনরুদ্ধার করতে পারেন। - সীমা : এটি 1000-01-01 00:00:00 থেকে 9999-12-31 23:59:59 পর্যন্ত সমর্থন করে।
- ব্যবহার ক্ষেত্র : নির্দিষ্ট কোনো সময় অঞ্চলের উপর নির্ভর না করে ডেটা সংরক্ষণ করতে চাইলে, যেমন ঐতিহাসিক ঘটনা বা ভবিষ্যৎ সময়সূচি, এটি উপযুক্ত।
উদাহরণ: একটি ইভেন্টের তারিখ/সময় সংরক্ষণ
উদাহরণস্বরূপ, যদি আপনি একটি “সার্বজনীন” তারিখ/সময় মান অপরিবর্তিত রাখতে চান, তবে DATETIME একটি ভাল পছন্দ। নিম্নলিখিত উদাহরণে নির্দিষ্ট তারিখ ও সময়ে নির্ধারিত একটি ইভেন্ট রেকর্ড করা হয়েছে।
CREATE TABLE events (
id INT,
event_name VARCHAR(50),
event_datetime DATETIME
);
এই টেবিলে, event_datetime-এ সংরক্ষিত তারিখ/সময় সময় অঞ্চলের দ্বারা প্রভাবিত হয় না, এবং মানটি ঠিক যেমন সংরক্ষিত হয়েছে তেমনই পুনরুদ্ধার হয়।
TIMESTAMP এর বৈশিষ্ট্য
- সময় অঞ্চলের উপর নির্ভরশীল :
TIMESTAMPটাইপ সার্ভারের সময় অঞ্চলের ভিত্তিতে সংরক্ষণ ও পুনরুদ্ধার করা হয়। বিভিন্ন সময় অঞ্চলের সার্ভারের মধ্যে ডেটা স্থানান্তর করলে, স্বয়ংক্রিয়ভাবে রূপান্তর হবে। - সীমা : এটি 1970-01-01 00:00:01 UTC থেকে 2038-01-19 03:14:07 UTC পর্যন্ত সমর্থন করে (Unix সময় সীমার উপর ভিত্তি করে)।
- স্বয়ংক্রিয় আপডেট সমর্থন :
DEFAULT CURRENT_TIMESTAMPএবংON UPDATE CURRENT_TIMESTAMPব্যবহার করে, MySQL ডেটা সন্নিবেশ বা আপডেট করার সময় স্বয়ংক্রিয়ভাবে বর্তমান টাইমস্ট্যাম্প রেকর্ড করতে পারে। - ব্যবহার ক্ষেত্র : রেকর্ডের সৃষ্টি বা আপডেট সময় স্বয়ংক্রিয়ভাবে ট্র্যাক করার জন্য সর্বোত্তম, যেমন আপনি যখনই কোনো রেকর্ড আপডেট করবেন তখন টাইমস্ট্যাম্প পরিবর্তন করতে চান।
উদাহরণ: পোস্টের তৈরি ও আপডেট সময় সংরক্ষণ
এই উদাহরণে TIMESTAMP এর স্বয়ংক্রিয় আপডেট ফিচার ব্যবহার করে ব্লগ পোস্টের তৈরি ও আপডেট সময় রেকর্ড করা হয়েছে।
CREATE TABLE blog_posts (
id INT,
title VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
এই সেটিংয়ের মাধ্যমে, পোস্ট প্রথম তৈরি হলে created_at রেকর্ড হয়, এবং পোস্ট সম্পাদনা করা হলে updated_at স্বয়ংক্রিয়ভাবে আপডেট হয়।
তুলনা টেবিল: DATETIME বনাম TIMESTAMP
| Feature | DATETIME | TIMESTAMP |
|---|---|---|
| Time zone | Not dependent on server time zone | Dependent on server time zone |
| Range | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC |
| Auto-update | None | Supported via DEFAULT CURRENT_TIMESTAMP, etc. |
| Typical use cases | Store fixed date/time values | Auto-track created/updated times |
কীভাবে নির্বাচন করবেন
- যদি আপনি সময় অঞ্চলের প্রভাব না চান তবে DATETIME নির্বাচন করুন : উদাহরণস্বরূপ, যদি আপনি কোনো নির্দিষ্ট দেশ/অঞ্চলের জন্য ইভেন্টের সময়কে একটি নির্দিষ্ট স্থানীয় সময় হিসেবে সংরক্ষণ করতে চান, তবে
DATETIMEউপযুক্ত হতে পারে। - যদি আপনি স্বয়ংক্রিয় আপডেট বা সময় অঞ্চল পরিচালনা প্রয়োজন হয় তবে TIMESTAMP নির্বাচন করুন : উদাহরণস্বরূপ, যদি আপনি ডেটাবেসের রো আপডেট হওয়ার সময় স্বয়ংক্রিয়ভাবে রেকর্ড করতে চান, তবে
TIMESTAMPসুবিধাজনক।
সারাংশ
DATETIME এবং TIMESTAMP এর বৈশিষ্ট্য ভিন্ন। আপনার উদ্দেশ্যের জন্য সঠিকটি নির্বাচন করলে আপনি তারিখ/সময় ডেটা আরও কার্যকরভাবে পরিচালনা করতে পারবেন। পরবর্তী অংশে, আমরা MySQL-এ প্রয়োজনীয় তারিখ ফাংশনগুলো দেখব।
4. MySQL তারিখ/সময় ফাংশনের মৌলিক বিষয়
MySQL তারিখ ও সময় নিয়ে কাজ করার জন্য অনেক ফাংশন প্রদান করে—বর্তমান তারিখ/সময় পুনরুদ্ধার থেকে শুরু করে ইন্টারভ্যাল যোগ বা বিয়োগ করা পর্যন্ত। এই ফাংশনগুলি ডেটাবেস প্রশাসন ও বিশ্লেষণের জন্য উপকারী। এই অংশে, আমরা MySQL তারিখ/সময় ফাংশনের মৌলিক বিষয় এবং তাদের সাধারণ ব্যবহার ক্ষেত্রগুলো ব্যাখ্যা করব।
বর্তমান তারিখ/সময় পাওয়ার ফাংশনসমূহ
MySQL-এ বর্তমান তারিখ এবং সময় পুনরুদ্ধার করার জন্য তিনটি সাধারণ ফাংশন হল NOW(), CURDATE(), এবং CURTIME()।
NOW()
NOW() ফাংশনটি বর্তমান তারিখ এবং সময় YYYY-MM-DD HH:MM:SS ফরম্যাটে ফেরত দেয়। এটি লগিং এবং রেকর্ডের টাইমস্ট্যাম্পের জন্য উপযোগী।
SELECT NOW(); -- Get the current date and time
CURDATE()
CURDATE() ফাংশনটি বর্তমান তারিখকে YYYY-MM-DD ফরম্যাটে ফেরত দেয়। এতে সময় অন্তর্ভুক্ত থাকে না, তাই শুধুমাত্র তারিখের প্রয়োজন হলে এটি উপযুক্ত।
SELECT CURDATE(); -- Get the current date
CURTIME()
CURTIME() ফাংশনটি বর্তমান সময়কে HH:MM:SS ফরম্যাটে ফেরত দেয়। যখন শুধুমাত্র সময়ের প্রয়োজন হয় এবং তারিখ না থাকে, তখন এটি ব্যবহার করুন।
SELECT CURTIME(); -- Get the current time
তারিখ যোগ/বিয়োগ করার ফাংশনগুলি
একটি তারিখে ইন্টারভ্যাল যোগ বা বিয়োগ করতে, DATE_ADD() এবং DATE_SUB() ব্যবহার করুন। এই ফাংশনগুলি ভবিষ্যৎ বা অতীতের তারিখ গণনা করা সহজ করে।
DATE_ADD()
DATE_ADD() ফাংশনটি একটি নির্দিষ্ট ইন্টারভ্যালকে তারিখে যোগ করে। উদাহরণস্বরূপ, এটি ৭ দিন পরে বা ১ মাস পরে তারিখ পেতে উপযোগী।
SELECT DATE_ADD('2023-01-01', INTERVAL 7 DAY); -- Returns 2023-01-08
DATE_SUB()
DATE_SUB() ফাংশনটি একটি নির্দিষ্ট ইন্টারভ্যালকে তারিখ থেকে বিয়োগ করে। অতীতের তারিখ গণনা করতে এটি ব্যবহার করুন।
SELECT DATE_SUB('2023-01-01', INTERVAL 1 MONTH); -- Returns 2022-12-01
তারিখ পার্থক্য গণনার ফাংশন
দুটি তারিখের মধ্যে পার্থক্য গণনা করতে, DATEDIFF() সুবিধাজনক। উদাহরণস্বরূপ, আপনি নির্দিষ্ট একটি তারিখ থেকে কত দিন কেটেছে বা দুটি তারিখের মধ্যে কত দিন আছে তা গণনা করতে পারেন।
DATEDIFF()
DATEDIFF() ফাংশনটি দুটি তারিখের মধ্যে পার্থক্য দিন হিসেবে ফেরত দেয়। এটি শুরু তারিখ থেকে শেষ তারিখ পর্যন্ত দিনের সংখ্যা নিশ্চিত করতে উপযোগী।
SELECT DATEDIFF('2023-01-10', '2023-01-01'); -- Returns 9
অন্যান্য উপযোগী তারিখ ফাংশন
MySQL অতিরিক্ত সহায়ক তারিখ ফাংশন সরবরাহ করে।
EXTRACT()
EXTRACT() ফাংশনটি একটি তারিখ থেকে নির্দিষ্ট অংশ (বছর, মাস, দিন ইত্যাদি) বের করে। যখন শুধুমাত্র তারিখের একটি অংশের প্রয়োজন হয়, তখন এটি উপযোগী।
SELECT EXTRACT(YEAR FROM '2023-01-01'); -- Extract year (2023)
SELECT EXTRACT(MONTH FROM '2023-01-01'); -- Extract month (1)
SELECT EXTRACT(DAY FROM '2023-01-01'); -- Extract day (1)
DATE_FORMAT()
DATE_FORMAT() ফাংশনটি একটি তারিখকে নির্দিষ্ট ফরম্যাটে প্রদর্শন করে। যখন আপনি নির্দিষ্ট ফরম্যাটে তারিখ দেখাতে চান (উদাহরণস্বরূপ, জাপানি-স্টাইলের ফরম্যাটিং), তখন এটি উপযোগী।
SELECT DATE_FORMAT('2023-01-01', '%Y-%m-%d'); -- Returns 2023-01-01
5. তারিখ ফরম্যাটিং এবং রূপান্তর পদ্ধতি
MySQL-এ, আপনি তারিখের প্রদর্শনকে আরও পাঠযোগ্য ফরম্যাটে পরিবর্তন করতে পারেন, অথবা তারিখের স্ট্রিংকে তারিখের টাইপে রূপান্তর করতে পারেন। এটি আপনাকে নমনীয়ভাবে প্রদর্শন ফরম্যাট নিয়ন্ত্রণ করতে এবং ইনপুট বিভিন্ন ফরম্যাটে আসলেও ডেটা ধারাবাহিকভাবে পরিচালনা করতে সহায়তা করে। এই অংশে, আমরা তারিখ ফরম্যাটিং এবং রূপান্তরের জন্য ব্যবহৃত প্রধান ফাংশনগুলি ব্যাখ্যা করব।
DATE_FORMAT() ফাংশন দিয়ে তারিখ ফরম্যাটিং
DATE_FORMAT() ব্যবহার করে, আপনি তারিখের মানকে নির্দিষ্ট ফরম্যাটে প্রদর্শন করতে পারেন। এটি বিশেষভাবে উপযোগী যখন আপনাকে স্ট্যান্ডার্ড ফরম্যাটের বাইরে অন্য কোনো প্রদর্শন ফরম্যাটের প্রয়োজন হয়, যেমন জাপানি “YYYY年MM月DD日” ফরম্যাট।
ফরম্যাট অপশন
DATE_FORMAT() দিয়ে, আপনি নিম্নলিখিত ফরম্যাট অপশনগুলি ব্যবহার করতে পারেন:
%Y: ৪-সংখ্যার বছর%y: ২-সংখ্যার বছর%m: ২-সংখ্যার মাস (01–12)%d: ২-সংখ্যার দিন (01–31)%H: ২-সংখ্যার ঘন্টা (00–23)%i: ২-সংখ্যার মিনিট (00–59)%s: ২-সংখ্যার সেকেন্ড (00–59)
উদাহরণ ব্যবহার
উদাহরণস্বরূপ, 2023-01-01 তারিখটি “2023年01月01日” হিসেবে প্রদর্শন করতে, আপনি নিম্নলিখিতভাবে লিখতে পারেন:
SELECT DATE_FORMAT('2023-01-01', '%Y年%m月%d日'); -- Returns 2023年01月01日
আপনি স্ল্যাশ ব্যবহার করে তারিখ এবং সময়ও প্রদর্শন করতে পারেন, যেমন “2023/01/01 12:30:45।”
SELECT DATE_FORMAT('2023-01-01 12:30:45', '%Y/%m/%d %H:%i:%s'); -- Returns 2023/01/01 12:30:45
STR_TO_DATE() ব্যবহার করে স্ট্রিংকে তারিখে রূপান্তর করা
STR_TO_DATE() ফাংশন একটি তারিখ স্ট্রিংকে MySQL তারিখ টাইপে রূপান্তর করে। উদাহরণস্বরূপ, যখন আপনি “2023年01月01日” এর মতো একটি স্ট্রিংকে DATE মান হিসেবে ব্যবহার করতে চান তখন এটি উপযোগী।
উদাহরণ ব্যবহার
“2023-01-01” স্ট্রিংকে DATE মানে রূপান্তর করতে, নিম্নলিখিতটি লিখুন:
SELECT STR_TO_DATE('2023-01-01', '%Y-%m-%d'); -- Returns 2023-01-01 as a DATE
“2023年01月01日” এর মতো জাপানি-স্টাইলের স্ট্রিংকে তারিখে রূপান্তর করতে, সংশ্লিষ্ট ফরম্যাট নির্দিষ্ট করুন:
SELECT STR_TO_DATE('2023年01月01日', '%Y年%m月%d日'); -- Returns 2023-01-01 as a DATE
বিভিন্ন ফরম্যাট থেকে তারিখ রূপান্তরের উদাহরণ
বাস্তব ব্যবহারে, তারিখ ইনপুটের ফরম্যাট ভিন্ন হতে পারে, তাই আপনাকে বিভিন্ন ফরম্যাট থেকে রূপান্তর করতে হতে পারে। নিচে কিছু উদাহরণ দেওয়া হল।
- “YYYY/MM/DD” কে
DATEমানে রূপান্তর করুনSELECT STR_TO_DATE('2023/01/01', '%Y/%m/%d'); -- Returns 2023-01-01 as a DATE
- “MM-DD-YYYY” কে
DATEমানে রূপান্তর করুনSELECT STR_TO_DATE('01-01-2023', '%m-%d-%Y'); -- Returns 2023-01-01 as a DATE
এইভাবে, ডেটা বিভিন্ন ফরম্যাটে ইনপুট হলেও, আপনি তা একীভূত তারিখ ফরম্যাটে সঞ্চয় এবং পরিচালনা করতে পারেন।
DATE_FORMAT এবং STR_TO_DATE এর পার্থক্য, এবং কখন কোনটি ব্যবহার করবেন
- DATE_FORMAT() : বিদ্যমান তারিখ মানের প্রদর্শন ফরম্যাট পরিবর্তন করতে ব্যবহৃত হয়। পরিবর্তনটি শুধুমাত্র প্রদর্শনে প্রভাব ফেলে, সঞ্চিত ডেটা নিজে পরিবর্তিত হয় না।
- STR_TO_DATE() : একটি তারিখ স্ট্রিংকে MySQL
DATEবাDATETIMEমানে রূপান্তর করতে ব্যবহৃত হয়। এটি সঞ্চিত ডেটা টাইপ পরিবর্তন করে এবং অন্যান্য MySQL ফাংশন ও কুয়েরির সঙ্গে তারিখ প্রক্রিয়াকরণ সহজ করে।
সারসংক্ষেপ
DATE_FORMAT() এবং STR_TO_DATE() ব্যবহার করে, আপনি তারিখ ডেটা কীভাবে প্রদর্শিত ও সঞ্চিত হয় তা নমনীয়ভাবে পরিচালনা করতে পারেন। এটি ব্যবহারকারী বা সিস্টেমের ইনপুটকে আরও নমনীয়ভাবে হ্যান্ডেল করতে সহায়তা করে, একইসাথে সঙ্গতিপূর্ণ তারিখ ব্যবস্থাপনা বজায় রাখে। পরবর্তী অংশে, আমরা তারিখ গণনা ও তুলনা ব্যাখ্যা করব, এবং কীভাবে তারিখ ডেটা ব্যবহার করে সময়কাল গণনা ও তুলনা করা যায় তা বিস্তারিতভাবে দেখব।
6. তারিখ গণনা ও তুলনা
MySQL তারিখ গণনা ও তুলনার জন্য বেশ কিছু সুবিধাজনক ফাংশন প্রদান করে। এগুলি নির্দিষ্ট সময়ের জন্য ডেটা বের করা বা বিশ্লেষণের জন্য তারিখের পার্থক্য গণনা করা সম্ভব করে। এই অংশে, আমরা তারিখ গণনা ও তুলনার জন্য ব্যবহৃত প্রধান ফাংশনগুলি এবং সেগুলি কীভাবে ব্যবহার করা যায় তা পরিচয় করিয়ে দেব।
তারিখ পার্থক্য গণনার ফাংশন: DATEDIFF()
DATEDIFF() ফাংশন দুটি তারিখের মধ্যে “দিন” হিসেবে পার্থক্য ফেরত দেয়। এটি তারিখের মধ্যে অতিবাহিত দিনগুলো পরীক্ষা করতে বা কোনো অতীত ঘটনার থেকে আজ পর্যন্ত কত দিন পেরিয়ে গেছে তা নির্ধারণে উপযোগী।
উদাহরণ ব্যবহার
উদাহরণস্বরূপ, ১ জানুয়ারি ২০২৩ থেকে ১০ জানুয়ারি ২০২৩ পর্যন্ত দিন সংখ্যা গণনা করতে, নিম্নলিখিতটি লিখুন:
SELECT DATEDIFF('2023-01-10', '2023-01-01'); -- Returns 9
এই উদাহরণে, শুরুর তারিখ থেকে শেষের তারিখ পর্যন্ত পার্থক্য ৯ দিন, তাই ফলাফল 9।
ইউনিট অনুযায়ী পার্থক্য গণনা: TIMESTAMPDIFF()
TIMESTAMPDIFF() ফাংশন নির্দিষ্ট ইউনিটে (বছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ড) দুটি তারিখ বা datetime এর পার্থক্য গণনা করে। উদাহরণস্বরূপ, আপনি প্রয়োজন অনুযায়ী “মাস” বা “ঘন্টা” পার্থক্য গণনা করতে পারেন।
উদাহরণ ব্যবহার
- মাসে পার্থক্য গণনা করুন
SELECT TIMESTAMPDIFF(MONTH, '2022-01-01', '2023-01-01'); -- Returns 12
- ঘন্টায় পার্থক্য গণনা করুন
SELECT TIMESTAMPDIFF(HOUR, '2023-01-01 00:00:00', '2023-01-02 12:00:00'); -- Returns 36
তারিখ তুলনা
তারিখ তুলনা MySQL এর স্ট্যান্ডার্ড তুলনা অপারেটর (<, >, <=, >=, =) ব্যবহার করে করা হয়। এটি আপনাকে নির্দিষ্ট সময়ের মধ্যে ডেটা বের করতে বা শর্ত হিসেবে অতীত/ভবিষ্যৎ তারিখ অন্তর্ভুক্ত করতে সক্ষম করে।
উদাহরণ ব্যবহার
উদাহরণস্বরূপ, “১ জানুয়ারি ২০২৩ অথবা তার পরের” ডেটা বের করতে, নিম্নলিখিতটি লিখুন:
SELECT * FROM events WHERE event_date >= '2023-01-01';
BETWEEN ব্যবহার করে রেঞ্জ নির্ধারণ
BETWEEN অপারেটরটি আপনাকে একটি তারিখের পরিসর নির্দিষ্ট করতে দেয় যাতে ডেটা পুনরুদ্ধার করা যায়। এটি দরকারী যখন আপনি একটি নির্দিষ্ট সময়কালের মধ্যে পড়া রেকর্ডগুলি নিষ্কাশন করতে চান।
Example Usage
উদাহরণস্বরূপ, ২০২৩ সালের ১ জানুয়ারি থেকে ৩১ জানুয়ারি পর্যন্ত ডেটা পুনরুদ্ধার করতে, নিম্নলিখিতটি লিখুন:
SELECT * FROM events WHERE event_date BETWEEN '2023-01-01' AND '2023-01-31';
Date Calculations with ADDDATE() and SUBDATE()
আপনি ADDDATE() এবং SUBDATE() ব্যবহার করতে পারেন একটি তারিখ থেকে দিনের সংখ্যা যোগ বা বিয়োগ করতে। এগুলি ভবিষ্যতের বা অতীতের তারিখ গণনা করার জন্য সুবিধাজনক।
Example Usage
- একটি তারিখে ১০ দিন যোগ করুন
SELECT ADDDATE('2023-01-01', 10); -- Returns 2023-01-11
- একটি তারিখ থেকে ১০ দিন বিয়োগ করুন
SELECT SUBDATE('2023-01-01', 10); -- Returns 2022-12-22
Summary
MySQL তারিখ গণনা এবং তুলনা বৈশিষ্ট্যগুলি ব্যবহার করে, আপনি নির্দিষ্ট সময়কালের জন্য ডেটা দক্ষতার সাথে নিষ্কাশন করতে পারেন এবং সময় পরিসর অনুসারে ডেটা বিশ্লেষণ করতে পারেন। পরবর্তী বিভাগে, আমরা “তারিখ পরিসর অনুসন্ধান” এর আরও উন্নত বিষয়টি আরও বিস্তারিতভাবে দেখব।


