2013-07-16 3 views
6

में विगत है मैं किसी तालिका मेंजांच करता है, तो एक तिथि आगामी या MySQL

  • EVENT_DATE (मूल्य है 2013/09/22)
  • EVENT_TIME (मूल्य 7:11 बजे)
  • दो स्तंभ

अब मैं एक प्रश्न लिखना चाहते हैं जो चाहिए रिटर्न पंक्ति जो भविष्य में समय और तारीख या विगत

मैं इस

की तरह कुछ लिखा है
select * from events e 
where concat(e.event_date,' ',e.event_time) <= date_format(now(),'%m/%d/%Y %g:%i %a') 

लेकिन यह काम नहीं किया है, यह सिर्फ उन चीजों है जो आप कभी पता नहीं में से एक क्या पहले से

धन्यवाद उन लोगों के साथ गलत क्या है है!

+0

आपने अपने डेटाबेस में तारीखों को टेक्स्ट के रूप में संग्रहीत किया है ??? –

+0

DATETIME या TIMESTAMP डेटा प्रकारों का उपयोग करके दिनांक/समय स्टोर करें। – Strawberry

उत्तर

1
select * from events e where TIMESTAMP(e.event_date,e.event_time) <= NOW() 
+0

CURTIME() रिटर्न 08:21:41 :) आप इसके साथ डेट की जांच करने की उम्मीद नहीं कर सकते, क्या आप? – imran

4
SELECT * 
    FROM Events 
WHERE event_date < CURRENT_DATE() 
    OR (  event_date = CURRENT_DATE() 
     AND event_time <= CURRENT_TIME() 
     ) 

यह किसी भी सूचकांक कि event_date पर मौजूद हो सकता है का उपयोग करने का लाभ दिया है।

0

सम्भावित समाधान event_date और event_time के मूल्यों जमा हो जाती है, तो के रूप में आप उन्हें पता चला

अतीत की घटनाओं

SELECT * 
    FROM events 
WHERE STR_TO_DATE(CONCAT(event_date, ' ', event_time), '%m/%d/%Y %h:%i %p') < NOW() 

भविष्य की घटनाओं

का चयन करें
SELECT * 
    FROM events 
WHERE STR_TO_DATE(CONCAT(event_date, ' ', event_time), '%m/%d/%Y %h:%i %p') > NOW() 

यहाँ SQLFiddle है का चयन करें डेमो

+0

@imran क्या इससे मदद मिली? – peterm

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