2011-02-23 14 views
29

मेरे पास timestamp नामक एक फ़ील्ड है। यह आखिरी बार एक सदस्य में लॉग इन किया गया था। मैं एक जहांमैं MySQL में टाइमस्टैम्प माइनस 6 सप्ताह कैसे प्राप्त करूं?

WHERE timestamp > todays date - 6 weeks 

मैं यह कर होगा कैसे की तरह कुछ के लिए एक प्रश्न में खंड शामिल करने के लिए देख रहा हूँ है? मैं केवल उन उपयोगकर्ताओं को शामिल करने का प्रयास कर रहा हूं जिन्होंने पिछले 6 सप्ताह में लॉग इन किया है।

धन्यवाद

उत्तर

47

मैं इस वाक्य रचना date_sub की तुलना में अधिक पठनीय पाते हैं, लेकिन किसी भी तरह से काम करता है।

WHERE timestamp >= NOW() - INTERVAL 6 WEEK 

आप से "आज" (मध्यरात्रि) जाना चाहते हैं तो बजाय "अब" (वर्तमान समय), तो आप का प्रयोग करेंगे इस

WHERE timestamp >= DATE(NOW()) - INTERVAL 6 WEEK 
+3

है कि जरूरत नहीं होगी जहां टाइमस्टैम्प> = UNIX_TIMESTAMP (NOW() - INTERVAL 6 सप्ताह)? –

+0

जिस तरह से मेरा उत्तर लिखा गया है वह अच्छी तरह से काम करता है। मुझे पता है, क्योंकि मैं इसे नियमित रूप से करता हूं। मैं कहां से खंड में 'UNIX_TIMESTAMP' जोड़ने के खिलाफ अनुशंसा करता हूं, क्योंकि यह असामान्य असामान्य है कि इसे ऐसा करने के लिए अनावश्यक है। –

+0

इस काम को जानना अच्छा है। इस विषय पर बस [इस सवाल] (http://stackoverflow.com/questions/3886269/can-i-compare-mysql-timestamp-with-datetime-columns-is-it-bad) मिला। –

3

This link दर्शाता है कि कैसे आप उपयोग कर कल की एक टाइमस्टैम्प प्राप्त हो सकता है प्रारूप DATE_ADD(CURDATE(), INTERVAL -1 DAY), इसलिए आपकी क्वेरी शायद होगा:

WHERE timestamp > DATE_ADD(CURDATE(), INTERVAL -42 DAY) 
+0

यह काम नहीं कर रहा है? फ़ील्ड टाइमस्टैम्प एक टाइमस्टैम्प प्रारूप है। क्या यह प्रश्न टाइमस्टैम्प के लिए है? – sark9012

+0

इसके बजाए अब() का उपयोग करने का प्रयास करें। मुझे लगता है कि मैंने गलत तरीके से माना कि CURDATE() हो सकता है एक टाइमस्टैम्प प्रकार में परिवर्तित किया गया। – Neil

-1

किसी भी भाग्य अभी तक। आप की कोशिश की है:

>= DATE_SUB(NOW(), INTERVAL 6 WEEK) 
+2

-1 यह बिल्कुल 5 महीने पहले प्रदान किए गए उत्तर एजेरियल जैसा ही है। http://stackoverflow.com/a/5091428/463304 –

2

आप उपयोग कर सकते हैं के बीच और now():

select somevalue 
from yourtable 
where yourtimestamp between now() - interval 1 day and now() 
संबंधित मुद्दे