2009-06-29 22 views
30

मैं समय के साथ दो तिथियों की तुलना करना चाहते की तुलना करें, मैं सभी परिणाम from tbl where date1 > date2Mysql दो datetime क्षेत्रों

Select * From temp where mydate > '2009-06-29 04:00:44'; 

चाहते हैं, लेकिन यह सिर्फ दिनांकों समय नहीं तुलना कर रहा है। यह मुझे आज की तारीख के सभी परिणाम सेट

'2009-06-29 11:08:57' 
'2009-06-29 11:14:35' 
'2009-06-29 11:12:38' 
'2009-06-29 11:37:48' 
'2009-06-29 11:52:17' 
'2009-06-29 12:12:50' 
'2009-06-29 12:13:38' 
'2009-06-29 12:19:24' 
'2009-06-29 12:27:25' 
'2009-06-29 12:28:49' 
'2009-06-29 12:35:54' 
'2009-06-29 12:36:54' 
'2009-06-29 12:49:57' 
'2009-06-29 12:58:04' 
'2009-06-29 04:13:20' 
'2009-06-29 04:56:19' 
'2009-06-29 05:00:23' 
'2009-06-29 05:04:26' 
'2009-06-29 05:08:17' 
'2009-06-29 05:26:57' 
'2009-06-29 05:29:06' 
'2009-06-29 05:32:11' 
'2009-06-29 05:52:07' 

अग्रिम धन्यवाद!

+13

कोई परिणाम नहीं है कि '200 9-06-29 04:00:44' से कम है, तो ऐसा लगता है कि आपका कोड काम कर रहा है, या क्या मुझे कुछ याद आ रही है? –

+0

मैं इन तिथियों को आउटपुट के रूप में नहीं चाहता '2009-06-29 04:56:19' '2009-06-29 05:00:23' '2009-06-29 05:04:26' '2009-06-29 05:08:17' '2009-06-29 05:26:57' '2009-06-29 05:29:06' '2009-06-29 05:32:11 ' ' 2009-06-29 05:52:07 ' –

+1

उम ... आपके पास इससे पहले कोई दृश्य नहीं है। ऐसा लगता है कि आप '2009-06-29 11:08:57' का सुझाव दे रहे हैं '2009-06-29 04:00:44' से पहले आता है। 4AM 11 बजे से पहले आता है, और इसलिए आप देख रहे हैं कि 11am 4am से अधिक है। फिर, क्या मुझे कुछ याद आ रही है? –

उत्तर

53

क्वेरी आप एक उदाहरण के रूप दिखाना चाहते है:

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44'; 

04:00:00 4:00 है, इसलिए सभी परिणाम आप के बाद आने कि सही है, जो प्रदर्शित कर रहे हैं ।

यदि आप 4 पीएम के बाद सब कुछ दिखाना चाहते हैं, तो आपको अपनी क्वेरी में सही (24hr) नोटेशन का उपयोग करने की आवश्यकता है।

चीज़ें थोड़ी स्पष्ट बनाने के लिए, इस प्रयास करें:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp; 

है कि आप दिनांक, और उसके 12hr समय।

3

आपकी क्वेरी ने समय पर विचार करने पर भी सभी सही तिथियां लौटा दीं।

यदि आप अभी भी परिणामों से खुश नहीं हैं, तो DATEDIFF को एक शॉट दें और दो तिथियों के बीच नकारात्मक/सकारात्मक परिणामों की तलाश करें।

सुनिश्चित करें कि आपका mydate कॉलम datetime प्रकार है।

3

क्या आप इसे ऑर्डर करना चाहते हैं?

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate; 
+0

नहीं, मुझे केवल 200 9-06-29 04:00:44 के बाद डेटाटाइम चाहिए ' –

+0

यही वह है जो आपको मिला है। – alexn

+0

नहीं, मुझे आज के समय के लिए सभी परिणाम सेट मिल रहे हैं, जिस दिन मैंने पूर्व के लिए निर्दिष्ट किया है: - मैंने जो समय दिया है वह 4 पीएम है और मुझे इसमें 11AM रिकॉर्ड मिल रहे हैं। –

9

आप दोनों की तारीख और समय की तुलना करने के निम्नलिखित एसक्यूएल उपयोग कर सकते हैं -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s'); 

संलग्न mysql उत्पादन जब मुझे लगता है कि आप समस्या

में उल्लेख मेज और मैदान की ही तरह पर एक ही एसक्यूएल इस्तेमाल किया enter image description here

यह सही काम करना चाहिए।

+0

शानदार। MySQL एक तारीख के बजाय स्ट्रिंग की तुलना कर रहा है! मैं इसे अब से ध्यान में रखूंगा। ग्रेट उत्तर, अपवित्र! –

+0

STR_TO_DATE, धन्यवाद !!! – mircea

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