MySQL

2010-05-08 6 views
28

में अंतराल और CURDATE के साथ कार्य करना मैं एक चार्ट के निर्माण कर रहा हूँ और मैं एक महीने के लिए डेटा प्राप्त करना चाहते हैं।MySQL

यहाँ मेरी पहली अनुरोध जो काम कर रहा है है:

SELECT s.GSP_nom AS nom, timestamp, AVG(v.vote + v.prix ) /2 AS avg 
FROM votes_serveur AS v 
INNER JOIN serveur AS s ON v.idServ = s.idServ 
WHERE s.valide =1 
AND v.date > CURDATE() -30 
GROUP BY s.GSP_nom 
ORDER BY avg DESC 

लेकिन, मेरे मामले में मैं, 12 पिछले महीनों के लिए डेटा प्राप्त करने के 12 अनुरोध लिखने के लिए है वहाँ किसी भी चाल लेखन से बचने के लिए है:

// example for the previous month 
AND v.date > CURDATE() -60 
AND v.date < CURDATE() -30 

मैं अंतराल के बारे में सुना है, मैं MySQL डॉक के लिए गया था, लेकिन मैं इसे लागू करने के प्रबंधन नहीं किया।

INTERVAL कृपया का उपयोग कर के किसी भी उदाहरण?

उत्तर

50

आप DATE_ADD/DATE_SUB की जरूरत है:

AND v.date > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH)) 
AND v.date < (DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) 

काम करना चाहिए।

13

मैं आमतौर पर उपयोग करने

DATE_ADD(CURDATE(), INTERVAL - 1 MONTH) 

कौन सा पेका की लेकिन इस तरह से आप अपने INTERVAL नियंत्रित कर सकते हैं नकारात्मक या सकारात्मक होने के लिए के रूप में लगभग एक ही है ...

+0

क्षमा करें दोस्त, आपका काम नहीं है मुझे नहीं पता कि क्यों mysql मुझे बताता है कि कोई परिणाम नहीं है:/ –

+0

अच्छा, यह होना चाहिए: और v.date confiq

+7

मैं उपयोग 'NOW() - INTERVAL 1 MONTH' –

12

एक स्टार ने सुझाव दिया है, मैं हमेशा कुछ का उपयोग की तर्ज पर:

DATE(NOW()) - INTERVAL 1 MONTH 

इसी तरह आप कर सकते हैं:

NOW() + INTERVAL 5 MINUTE 
"2013-01-01 00:00:00" + INTERVAL 10 DAY 

और इतने पर। DATE_ADD या DATE_SUB हर समय :) टाइपिंग की तुलना में बहुत आसान!