Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दो अलग-अलग तिथियों से वर्षों में अंतर कैसे प्राप्त करें?

यहां दी गई अभिव्यक्ति है जो लीप वर्ष को भी पूरा करती है:

YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))

यह काम करता है क्योंकि अभिव्यक्ति (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) क्या true है अगर date1 date2 और . की तुलना में "वर्ष में पहले" है क्योंकि mysql में, true = 1 और false = 0 , इसलिए समायोजन केवल तुलना के "सत्य" को घटाने का मामला है।

यह आपके परीक्षण मामलों के लिए सही मान देता है, परीक्षण #3 को छोड़कर - मुझे लगता है कि यह परीक्षण #1 के अनुरूप होने के लिए "3" होना चाहिए:

create table so7749639 (date1 date, date2 date);
insert into so7749639 values
('2011-07-20', '2011-07-18'),
('2011-07-20', '2010-07-20'),
('2011-06-15', '2008-04-11'),
('2011-06-11', '2001-10-11'),
('2007-07-20', '2004-07-20');
select date1, date2,
YEAR(date1) - YEAR(date2)
    - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) as diff_years
from so7749639;

आउटपुट:

+------------+------------+------------+
| date1      | date2      | diff_years |
+------------+------------+------------+
| 2011-07-20 | 2011-07-18 |          0 |
| 2011-07-20 | 2010-07-20 |          1 |
| 2011-06-15 | 2008-04-11 |          3 |
| 2011-06-11 | 2001-10-11 |          9 |
| 2007-07-20 | 2004-07-20 |          3 |
+------------+------------+------------+

देखें SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में चल रहे कुल की गणना करें

  2. जॉइन करके किसी अन्य तालिका से गैर-मौजूदा डेटा कैसे खोजें?

  3. वर्डप्रेस ब्लॉग चलाने के लिए PHP-MySQL लगातार कनेक्शन का उपयोग करना

  4. क्या कॉलम और टेबल नाम केस MySQL में संवेदनशील हैं?

  5. MySQL में sqlalchemy कनेक्शन कैसे बंद करें