2012-11-19 12 views
9

मैं पिछले 2 घंटों से पंक्तियों का चयन करने की कोशिश कर रहा हूं। किसी कारण से यह काम नहीं करता है। कोड सिंटैक्स ठीक दिखता है और अन्य टेबल पर उपयोग किए जाने पर काम करता है, लेकिन किसी कारण से जब टेबल Posts पर उपयोग किया जाता है, तो पंक्तियों को 2 घंटे से अधिक पुराना मिलता है।DATETIME पिछले 2 घंटों से पंक्तियों का चयन करें

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_DATE, INTERVAL 2 HOUR) 

क्या कोड के साथ कोई समस्या है? क्या इसे लिखने का कोई और तरीका है? इसका क्या कारण रह सकता है?

+0

'CURRENT_DATE' में समय का हिस्सा नहीं है, इसलिए जब आप दो घंटे घटाते हैं तो आप मध्यरात्रि से घटा रहे हैं। मेरा जवाब जांचें। –

उत्तर

6

ऐसा इसलिए है क्योंकि आप CURRENT_DATE का उपयोग कर रहे है, तो आप NOW() या CURRENT_TIMESTAMP बजाय का उपयोग करना चाहिए।

समस्या यह है कि 2 घंटे आप अंत पिछले दिन के 22:00:00 हो रही substracting द्वारा, CURRENT_DATE का उपयोग कर किया जा रहा है किसी दिनांक मान, 00:00:00 समय का डिफ़ॉल्ट है, इसलिए, बजाय पिछले 2 घंटे की ... है

6

यह करने के लिए परिवर्तन:

SELECT * FROM Posts WHERE `Date` > SUBDATE(CURRENT_TIMESTAMP, INTERVAL 2 HOUR) 
16

आप सरल संकेतन का उपयोग कर सकते हैं:

SELECT * FROM Posts WHERE `Date` > NOW() - INTERVAL 2 HOUR 
1

आप इसे

SELECT * FROM Posts WHERE `Date` > DATE_SUB(CURDATE(), INTERVAL 3 HOUR) 
संबंधित मुद्दे