2012-12-30 11 views
52

हर रिकॉर्ड मेरी SQLite डेटाबेस में एक क्षेत्र है जो एक Date प्रारूप 'yyyy-MM-dd HH:mm:ss' में एक string के रूप में जमा होता है शामिल हैं।SQLite आदेशानुसार दिनांक

क्या हालिया तारीख में रिकॉर्ड प्राप्त करने के लिए डेटाबेस से पूछना संभव है?

+6

आपको तिथि को मिलीसेकंड में संग्रहीत करना चाहिए और इसे प्रदर्शित करने के लिए हर बार कनवर्ट करना चाहिए। यह सॉर्टिंग इत्यादि के दौरान इसे आसान बना देगा। – Andrei

उत्तर

113

आप मेरी समस्या

select * from Table order by datetime(datetimeColumn) DESC LIMIT 1 

हल करने के लिए जब से मैं datetime नहीं तिथि स्तंभ के रूप में यह भंडारण किया गया था इस तरह से इस

SELECT * FROM Table ORDER BY date(dateColumn) DESC Limit 1 
+37

ध्यान दें कि यदि आप दिनांक ** और समय ** के अनुसार आदेश देना चाहते हैं तो आपको 'दिनांक()' – eliocs

2

आप इसे यूनिक्स टाइमस्टैम्प कन्वर्ट करने के लिए की जरूरत है, और फिर उनकी तुलना:

SELECT * FROM data ORDER BY strftime('%s', date_column) DESC 

लेकिन यह बहुत धीमी गति से हो सकता है, अगर वहाँ पंक्तियों के बहुत सारे हैं। बेहतर दृष्टिकोण डिफ़ॉल्ट रूप से यूनिक्स टाइमस्टैम्प को स्टोर करना होगा, और उस कॉलम के लिए एक अनुक्रमणिका बनाएं।

34

मेरे लिए मैं अपने प्रश्न था की तरह यह कर सकते हैं

+3

के 'डेटाटाइम()' इंटीड का उपयोग करने की आवश्यकता है, इसके अतिरिक्त, दिनांक() फ़ंक्शन इस प्रारूप में तारीख लौटाता है: वाई वाई वाई वाई-एमएम-डीडी। समय() फ़ंक्शन एचएच के रूप में समय लौटाता है: एमएम: एसएस। डेटाटाइम() फ़ंक्शन "YYYY-MM-DD एचएच: एमएम: एसएस" लौटाता है। – wangqi060934

+0

पिछले उत्तर की तुलना में आपने अपने उत्तर में क्या अंतर किया है? @ अहमद बराका –

+0

@ गोथममब्रमण्यम तिथि के बजाए डेटाटाइम() का उपयोग कर() – AnthoPak

1

आप अपने कॉलम "sent_date_time" को yyyy-MM-dd प्रारूप में परिवर्तित कर सकते हैं और फिर

1) substr(sent_date_time,7,4)||"-"||substr(sent_date_time,1,2)||"-"||substr(sent_date_time,4,2) as date 
2) order by date desc 
द्वारा ऑर्डर कर सकते हैं
0

जब आप सुनिश्चित करें कि पाठ क्षेत्र का स्वरूप yyyy-MM-dd HH:mm:ss (पूर्व .: 2017-01-02 16:02:55) है, तो यह सिर्फ मेरे लिए काम करता है: किसी भी अतिरिक्त तिथि समारोह के बिना

SELECT * FROM Table ORDER BY dateColumn DESC Limit 1

!

0

मेरे मामले में सब कुछ ठीक है कास्टिंग कॉलम 'दिनांक' टाइप करने के लिए। बस डबल उद्धरण उस तरह के साथ स्तंभ नाम निर्दिष्ट द्वारा:

SELECT * FROM 'Repair' ORDER BY "Date" DESC; 

मुझे लगता है कि SQLite ही या ऐसा ही कुछ द्वारा कास्टिंग बनाता है, लेकिन यह काम नहीं किया है, जब मैं अपने आप को द्वारा करने के लिए 'डाली' तिथि कॉलम की कोशिश की। और कोई त्रुटि संदेश नहीं था।