ORDER BY এক্সপ্রেশন দিয়ে শূন্য টাইমস্ট্যাম্পকে প্রথমে আনা
MySQL-এ TIMESTAMP কলাম ডিফল্ট ভ্যালু '0000-00-00 00:00:00' হতে পারে। DESC সাজানোর সময় এই শূন্য মানগুলো সর্বশেষে চলে যায়। তাদের প্রথমে রাখতে বুলিয়ান এক্সপ্রেশন ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (`timestamp` TIMESTAMP);
mysql> INSERT INTO DemoTable VALUES(NOW()), ('00:00:00'), ('2018-01-10 12:34:45'), ('2019-12-31 10:50:45');
সাধারণ ORDER BY DESC (শূন্য শেষে)
+---------------------+ | timestamp | +---------------------+ | 2019-12-31 10:50:45 | | 2019-08-17 06:17:12 | | 2018-01-10 12:34:45 | | 0000-00-00 00:00:00 | +---------------------+
শূন্য প্রথমে রাখার কোয়েরি
mysql> SELECT * FROM DemoTable ORDER BY (`timestamp` = 0) DESC, `timestamp` DESC;
+---------------------+ | timestamp | +---------------------+ | 0000-00-00 00:00:00 | | 2019-12-31 10:50:45 | | 2019-08-17 06:17:12 | | 2018-01-10 12:34:45 | +---------------------+
ব্যাখ্যা
(`timestamp` = 0)— শূন্য টাইমস্ট্যাম্পের জন্য TRUE (1), অন্যদের FALSE (0) রিটার্ন করে।DESC— TRUE (1) কে FALSE (0) থেকে আগে আনে, অর্থাৎ শূন্য মানগুলো প্রথমে আসে।- দ্বিতীয়
ORDER BY `timestamp` DESC— বাকি গুলো সাধারণ DESC-এ সাজায়।
নোট
MySQL-এ TIMESTAMP কলামে '0000-00-00 00:00:00' হলো "zero" ভ্যালু, যা NULL নয়। NO_ZERO_DATE SQL মোড অন থাকলে এই ভ্যালু ইনসার্ট হয় না।