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

दिनांक सीमा से दिन उत्पन्न करें

यह समाधान कोई लूप, प्रक्रिया या अस्थायी तालिकाओं का उपयोग नहीं करता . सबक्वायरी पिछले 10,000 दिनों के लिए दिनांक उत्पन्न करती है, और इसे आपकी इच्छानुसार आगे या पीछे जाने के लिए बढ़ाया जा सकता है।

select a.Date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d
) a
where a.Date between '2010-01-20' and '2010-01-24' 

आउटपुट:

Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20

प्रदर्शन पर नोट्स

इसका परीक्षण करना यहां , प्रदर्शन आश्चर्यजनक रूप से अच्छा है:उपरोक्त क्वेरी में 0.0009 सेकंड लगते हैं।

यदि हम लगभग उत्पन्न करने के लिए सबक्वेरी का विस्तार करते हैं। 100,000 नंबर (और इस प्रकार लगभग 274 साल की तारीखें), यह 0.0458 सेकंड में चलता है।

संयोग से, यह एक बहुत ही पोर्टेबल तकनीक है जो मामूली समायोजन वाले अधिकांश डेटाबेस के साथ काम करती है।

SQL Fiddle उदाहरण जो 1,000 दिन लौटा रहा है



  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. MySQL में दिनांक स्वरूप निर्दिष्टकर्ताओं की सूची

  3. पुराने प्रमाणीकरण का उपयोग करके MySQL 4.1+ से कनेक्ट नहीं हो सकता

  4. MySQL:एक सेलेक्ट स्टेटमेंट केस संवेदनशील है?

  5. MySQL का उपयोग करके एक यादृच्छिक और अद्वितीय 8 वर्ण स्ट्रिंग उत्पन्न करना