MySQL-এ বর্তমান তারিখ (CURDATE()) এবং একটি ডেট কলামের মধ্যে দিনের পার্থক্য বের করতে DATEDIFF() ফাংশন ব্যবহার করুন। যদি কলামটি VARCHAR হয়, তবে STR_TO_DATE() দিয়ে পার্স করুন।
সিনট্যাক্স
SELECT DATEDIFF(CURDATE(), STR_TO_DATE(date_column, '%d-%m-%Y')) AS days_diff
FROM table_name;
উদাহরণ
CREATE TABLE date_diff_demo (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
arrival_date VARCHAR(100) -- dd-mm-yyyy ফরম্যাটে স্ট্রিং
);
INSERT INTO date_diff_demo (arrival_date) VALUES
('12-10-2011'), ('01-12-2013'), ('31-10-2014'),
('12-04-2016'), ('20-08-2018'), ('11-03-2019');
ক্যোয়ারি
SELECT DATEDIFF(CURDATE(), STR_TO_DATE(arrival_date, '%d-%m-%Y')) AS number_of_days
FROM date_diff_demo;
ফলাফল (ধরে নিচ্ছি CURDATE() = 2019-03-12)
+--------------+
| number_of_days |
+--------------+
| 2708 |
| 1927 |
| 1593 |
| 1064 |
| 204 |
| 1 |
+--------------+
গড় দিনের পার্থক্য
SELECT AVG(DATEDIFF(CURDATE(), STR_TO_DATE(arrival_date, '%d-%m-%Y'))) AS avg_days
FROM date_diff_demo;
দ্রষ্টব্য
DATEDIFF(date1, date2)=date1 - date2(দিনের সংখ্যা)CURDATE()শুধু তারিখ রিটার্ন করে (সময় নেই)STR_TO_DATE(str, format)স্ট্রিংকেDATEটাইপে রূপান্তর করে- ফরম্যাট স্ট্রিং
%d-%m-%Yমানে dd-mm-yyyy
আধুনিক পদ্ধতি (MySQL 8.0+): CTE ব্যবহার
WITH parsed AS (
SELECT id, STR_TO_DATE(arrival_date, '%d-%m-%Y') AS arrival_dt
FROM date_diff_demo
)
SELECT id, arrival_dt, DATEDIFF(CURDATE(), arrival_dt) AS days_diff
FROM parsed;
টাইমস্ট্যাম্প কলামের জন্য
-- DATETIME/TIMESTAMP কলামের জন্য STR_TO_DATE লাগে না
SELECT DATEDIFF(CURDATE(), datetime_column) AS days_diff FROM table_name;