কম্পিউটার টিউটোরিয়াল

MySQL-এ DATEDIFF() এবং ORDER BY ব্যবহার করে বর্তমান তারিখ থেকে দিনের পার্থক্য সহ সর্ট করা

MySQL-এ DATEDIFF() ফাংশন এবং ORDER BY ক্লজ ব্যবহার করে বর্তমান তারিখ থেকে প্রতিটি ডিউ ডেটার পার্থক্য বের করে এবং তার অনুযায়ী সর্ট করা যায়।

বর্তমান তারিখ

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2019-06-09 21:08:16 |
+---------------------+
1 row in set (0.00 sec)

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> DueDate DATETIME
    -> );
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO DemoTable(DueDate) VALUES('2019-06-12');
mysql> INSERT INTO DemoTable(DueDate) VALUES('2019-06-01');
mysql> INSERT INTO DemoTable(DueDate) VALUES('2019-06-05');
mysql> INSERT INTO DemoTable(DueDate) VALUES('2019-06-10');
mysql> INSERT INTO DemoTable(DueDate) VALUES('2019-06-11');

সব রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+----+---------------------+
| Id | DueDate             |
+----+---------------------+
| 1  | 2019-06-12 00:00:00 |
| 2  | 2019-06-01 00:00:00 |
| 3  | 2019-06-05 00:00:00 |
| 4  | 2019-06-10 00:00:00 |
| 5  | 2019-06-11 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)

পার্থক্য সহ সর্ট করা (ভবিষ্যতের তারিখ আগে, অতীতের পরে)

mysql> SELECT Id, DueDate, DATEDIFF(DueDate, CURDATE()) AS t
    -> FROM DemoTable
    -> ORDER BY CASE WHEN t < 0 THEN 1 ELSE 0 END, t;

আউটপুট

+----+---------------------+------+
| Id | DueDate             | t    |
+----+---------------------+------+
| 4  | 2019-06-10 00:00:00 | 1    |
| 5  | 2019-06-11 00:00:00 | 2    |
| 1  | 2019-06-12 00:00:00 | 3    |
| 2  | 2019-06-01 00:00:00 | -8   |
| 3  | 2019-06-05 00:00:00 | -4   |
+----+---------------------+------+
5 rows in set (0.00 sec)

ব্যাখ্যা:

  • DATEDIFF(DueDate, CURDATE()) — DueDate থেকে বর্তমান তারিখ বিয়োগ করে দিনের পার্থক্য (পজিটিভ = ভবিষ্যত, নেগেটিভ = অতীত)।
  • CASE WHEN t < 0 THEN 1 ELSE 0 END — অতীতের তারিখ (t < 0) কে ১, ভবিষ্যতের কে ০ দিয়ে গ্রুপ করে। ORDER BY অরোহী ক্রমে সাজায়, তাই ০ (ভবিষ্যত) আগে আসে।
  • t — একই গ্রুপের ভিতরে পার্থক্য অনুযায়ী সর্ট (সর্বোচ্চ അടশের তারিখ প্রথমে)।
  1. MySQL-এ একটি কলাম থেকে ডুপ্লিকেট রেকর্ডের গণনা করা এবং ফলাফল অর্ডার করা

  2. MySQL-এ বর্তমান তারিখ থেকে একই মাসের শেষ পর্যন্ত রেকর্ড প্রদর্শন করা

  3. MySQL-এ কারেন্ট ডেট ও টেবিলের ডেট রেকর্ডের পার্থক্য বের করা

  4. MySQL DATEDIFF() ফাংশন ব্যবহার করে বর্তমান তারিখ ও যোগদানের তারিখের পার্থক্য বের করা