2011-09-30 13 views
12

मैं एक प्रश्न बनाने की कोशिश कर रहा हूं जो टाइमस्टैम्प के आधार पर परिणाम वापस लाता है, 30 मिनट का अंतराल कहता है।mySQL चुनें टाइमस्टैम्प (अब() - 3000);

तो मैं क्या पता लगा है कि मैं

SELECT * FROM x WHERE ts BETWEEN timestamp(now()-3000) AND timestamp(now()) 

तो यह सब कुछ पिछले 30 मिनट के भीतर स्तंभ ts में टाइमस्टैम्प के साथ एक्स से क्वेरी करेगा कर सकते हैं।

हालांकि, यह केवल बाद में काम करता है() yyyy-mm-dd एचएच: 30: 00 अंक से पहले है क्योंकि इससे पहले कभी भी न्यूल में परिणाम होगा ... यह बल्कि बोझिल है और मुझे समझ में नहीं आता क्यों घंटे से केवल Friggin मिनट घटाना नहीं होगा!

कृपया मेरी मदद करें! मुझे पिछले 30 मिनट के भीतर कोई प्रश्न करने का कोई अन्य तरीका नहीं मिला, यही वह है जिसे मैं हासिल करने की कोशिश कर रहा हूं।

सादर,

जॉन

सभी की

उत्तर

34
SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW()) 
1

पहले आप उस टाइमस्टैम्प साकार करने के लिए() सेकंड में एक यूनिक्स टाइमस्टैम्प रिटर्न की जरूरत है। 3000 सेकंड 30 मिनट नहीं है, यह 1800 सेकेंड होना चाहिए। कोशिश करें कि

+0

वास्तव में है जब मैं 1800 घटाया गया यह केवल 18 सेकंड घटा दिया गया है ... – Theveloper

+0

@ डेवलपर आह यह unix_timestamp होना चाहिए, उस भाग को नहीं देखा। एक टाइमस्टैम्प एक अलग प्रारूप में है जिसे आप गणित के साथ सुसंगत रूप से नहीं कर सकते हैं। – mugetsu

11
SELECT * FROM x WHERE ts BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW(); 
2
SELECT * FROM x 
WHERE ts BETWEEN TIMESTAMPADD(MINUTE, -30, NOW()) AND NOW(); 
0
SELECT * FROM (`yourdb`) WHERE `timestamp` BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW(); 
1

मेरे लिए, क्या काम किया क्वेरी

select * from x where (now() - ts) < 180000 

180000 पीछा कर रहा है, 30 मिनट है, क्योंकि 6000 एमएस 1 मिनट

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