2010-09-29 10 views
140

निम्न क्वेरी:MySQL का उपयोग करके दो तिथियों के बीच मैं क्वेरी कैसे करूं?

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55') 

रिटर्न कुछ भी नहीं।

हालांकि क्वेरी के लिए मेरे पास पर्याप्त डेटा होना चाहिए। मैं क्या गलत कर रहा हूं?

+14

बीटवेन के साथ सावधान रहें, क्योंकि 'min' और' max' मान दोनों को सीमा में माना जाता है, ताकि तिथि को दो बार संसाधित न किया जा सके, या तो 'min' और 'अधिकतम' मान (एज केस)। उदाहरण के लिए, दिनांक '2010-09-29 00: 00: 00' '2010-09-28 00: 00: 00' और' 2010-09-29 00: 00: 00'_, ** के बीच होगा यह भी ** _ के बीच '2010-09-29 00: 00: 00' और' 2010-09-30 00: 00: 00'_ – minipif

+0

हाँ, उन्होंने क्या कहा ^^ –

उत्तर

303

आपकी दूसरी तारीख अपने पहले की तारीख से पहले (। यानी आप 29 सितंबर 2010 और 30 जनवरी 2010 के बीच में जानना चाहते हैं) है। तारीखों के आदेश को पलटने का प्रयास करें:

SELECT * 
FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
+1

धन्यवाद। मैं 'तारीखों के आसपास' याद किया था। – xeo

+0

मुझे यह पता था लेकिन अब अपडेट के साथ समस्या है। मैं अद्यतन के लिए BETWEEN का उपयोग करने की कोशिश कर रहा हूँ क्या यह वही काम करना चाहिए? –

+1

@IngusGraholskis: '''' क्लॉज को 'चयन' या 'अपडेट' कथन' पर समान कार्य करना चाहिए। – T30

10

date_field प्रकार datetime है? इसके अलावा आपको पहले इयरलर तिथि डालना होगा।

यह होना चाहिए:

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
0

कोशिश चारों ओर दिनांकों स्विचिंग:

2010-09-29 > 2010-01-30? 
1

सर्वर साइड पर या क्लाइंट की तरफ तारीख विन्यास के साथ एक समस्या हो सकती है। मुझे यह पता चला है कि होस्ट कई भाषाओं पर एक आम समस्या है जब मेजबान स्पेनिश, फ्रेंच या जो कुछ भी कॉन्फ़िगर किया गया है ... जो प्रारूप dd/mm/yyyy या mm/dd/yyyy को प्रभावित कर सकता है।

+2

समस्या पुरानी तारीख को नई तारीख से पहले सूचीबद्ध किया गया था। – theninjagreg

20

आपकी क्वेरी तारीख

select * from table between `lowerdate` and `upperdate` 

के रूप में की कोशिश

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
3

DATE() एक MySQL समारोह है कि एक तारीख या तिथि के केवल तारीख हिस्सा निकालता है/समय अभिव्यक्ति

SELECT * FROM table_name WHERE DATE(date_field) BETWEEN '2016-12-01' AND '2016-12-10'; 
होना चाहिए
+0

आप * एक स्पष्टीकरण जोड़ सकते हैं ताकि लोग समझ सकें कि आप क्या कर रहे हैं। –

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