IF(condition, true_val, false_val) का उपयोग करके टाइमस्टैम्प कॉलम की वर्तमान दिनांक से तुलना करके बूलियन (0/1) मान उत्पन्न करें।
वर्तमान दिनांक
mysql> SELECT CURDATE(); -- 2019-12-10
टेबल बनाएं
mysql> CREATE TABLE DemoTable1890 (DueDate TIMESTAMP);
डेटा डालें
mysql> INSERT INTO DemoTable1890 VALUES('2017-12-10'), ('2021-12-10'), ('2018-04-24'), ('2020-05-11');
2 साल से पुराने रिकॉर्ड = true (1)
mysql> SELECT IF(DueDate > CURDATE() - INTERVAL 2 YEAR, FALSE, TRUE) AS Status
FROM DemoTable1890;
आउटपुट:
+--------+ | Status | +--------+ | 1 | | 0 | | 0 | | 0 | +--------+
व्याख्या
CURDATE() - INTERVAL 2 YEAR= '2017-12-10'।DueDate > '2017-12-10'→ भविष्य/हाल के → FALSE (0)।DueDate <= '2017-12-10'→ 2+ साल पुराने → TRUE (1)।- पहली पंक्ति '2017-12-10' → सख्ती से अधिक नहीं → FALSE? लेकिन आउटपुट 1 दिखाता है। नोट: TIMESTAMP में समय भाग होता है; '2017-12-10 00:00:00' > '2017-12-10' असत्य है। मूल उदाहरण में तर्क उल्टा लगता है। सही:
IF(DueDate < CURDATE() - INTERVAL 2 YEAR, TRUE, FALSE)
सुधारित तर्क
SELECT IF(DueDate < CURDATE() - INTERVAL 2 YEAR, 1, 0) AS IsOlderThan2Years FROM DemoTable1890;
बूलियन उपयोग
- MySQL में
TRUE = 1,FALSE = 0। BOOLEAN=TINYINT(1)समानार्थी।- एप्लिकेशन में
rs.getBoolean()काम करता है।