2012-12-12 13 views
8

नीचे स्क्लाइट डीबी से एक क्वेरी के रूप में मुझे जो मिला है उसका स्नैपशॉट है।एंड्रॉइड/जावा स्क्लाइट: अधिकतम डेटाटाइम कैसे प्राप्त करें?

googling और चारों ओर प्रश्न के एक नंबर पढ़ने के बाद, मैं जानना चाहता हूँ कि max() तरह कुल कार्यों का उपयोग कर अधिकतम datetime पुनः प्राप्त करने के लिए आए हैं संभव के रूप में SQLite ज्यादा डेटाटाइप्स का समर्थन नहीं करता, लेकिन text के रूप में व्यवहार करता है डेटाप्रकार नहीं है।

तो, मैंने इस डेटा को List या java स्तर पर लाया है। तो अब मैं इस सूची से अधिकतम डेटाटाइम कैसे प्राप्त कर सकता हूं।

क्या जावा में इस प्रारूप के लिए कोई प्रत्यक्ष निर्माण है। या हमारे पास स्क्लाइट स्तर पर कुछ है जो मुझे नहीं मिला।

Sqlite returned data

+0

एसक्यूएल का उपयोग कर यह पता लगाने जा सकता है आप अगर एक ऑटो incrementing अद्वितीय आईडी का उपयोग करें, तो उच्चतम अद्वितीय आईडी सैद्धांतिक रूप से आपको सबसे हालिया तारीख का समय मिलना चाहिए। – EGHDK

+0

मूल रूप से मैं 'current_test_id' चाहता हूं जहां' test_datetime' अधिकतम है। – Prateek

+0

अधिकतम और सॉर्ट तिथियों का उपयोग लंबे समय तक करें (हालांकि, आपका प्रारूप भी काम करेगा, जैसा कि यह तुलनीय लगता है) – njzk2

उत्तर

16

ग्रंथों की तुलना SQLite में की जा सकती है, क्रमबद्ध और क्रमबद्ध की जा सकती है।

आपका प्रारूप YYYY-MM-dd hh: mm: ss प्रतीत होता है। आपके लिए भाग्यशाली, इस प्रारूप को आदेश देने के परिणामस्वरूप आदेश के अनुसार।

सिर्फ

select current_test_id from someTable order by test_datetime desc limit 1 

या

select current_test_id, max(test_datetime) from someTable 

(या कुछ और, पूरी तरह से एक दूसरे के लिए यकीन नहीं)

+0

भयानक आदमी पहले एक काम किया। लेकिन अगर डेट-टाइम का प्रारूप कुछ अलग था। उस मामले में घटना ठीक काम करेगी? – Prateek

+1

जब तक आपकी तिथि प्रारूप को सॉर्ट किया जा सके, यह काम करेगा। यहां का मुख्य भाग यह है कि तारों की लंबाई समान होती है, और स्ट्रिंग में मानों को महत्व से क्रमबद्ध किया जाता है (वर्ष महीने से अधिक महत्वपूर्ण है और इसी तरह से।) यदि आप किसी भी 2 को उलटा करते हैं, तो यह अब काम नहीं करेगा। अगली बार जब मैं डेट स्टोरेज के लिए लंबे समय तक उपयोग करने की सलाह देता हूं। – njzk2

0

एक आम दृष्टिकोण स्टोर करने के लिए डेटा के रूप में लंबे समय से परिवर्तित है।

अपने टाइमस्टैंप से दिनांक वस्तु प्राप्त करने के लिए अपने दिनांक उदाहरण और Date date = new Date(timestamp); से लंबे समय तक date.getTime() का उपयोग करें।

एक बार जब आप अपने डीबी में लंबे समय तक हों तो आप अपनी इच्छित ऑर्डरिंग/तुलना कर सकते हैं।

+0

आपने टिप्पणी देखी होगी कि अब स्कीमा नहीं बदल सकता है! - पीकेएस – njzk2

+0

लेकिन अगर हमारे पास डीबी में लंबा समय नहीं है तो? – Prateek

+0

माफ करना जब मैं जवाब लिख रहा था तो टिप्पणी नहीं देखी गई! – fedepaol

2

अगर आप datetime क्षेत्र पाठ के प्रकार सेट तो आप प्रदर्शन कर सकते हैं निम्नलिखित क्वेरी लेकिन डेटाटाइम yyyy-mm-dd hh:mm:ss

होना चाहिए
0

प्रकार का समय (स्ट्रिंग) का एक सेट से अधिकतम मूल्य पुनर्प्राप्त करने के लिए हम कुछ उप स्ट्रिंग इस क्वेरी अधिकतम या न्यूनतम समय का उपयोग करना का उपयोग कर concatenations करने के लिए लाइट

select max(datetime(case 
when substr(TimeIn,7,2)='PM' 
then substr(TimeIn,1,2)+12 
else substr(TimeIn,1,2) 
end || ':' || substr(TimeIn,4,2) || ':' || '00')) 
from tablename 
where Date='10/06/2016' 
+0

कृपया कुछ स्पष्टीकरण भी जोड़ें। केवल कोड के साथ जवाब हटा दिया जाता है। उत्तर में – rghome

+0

। इसे संपादित करने का प्रयास करें। – rghome

संबंधित मुद्दे