2012-03-30 16 views
24

मेरे पास एक त्वरित प्रश्न है। मेरे पास एक डाटाबेस कॉलम वाला एक डीबी एक ऑडिट टेबल है। (यानी 2012-03-27 00:00:00) और यदि मैं दो तारीखों के बीच की तारीख में हूं, तो मैं पंक्तियों का एक सेट वापस करने के लिए एक MySQL क्वेरी बना रहा हूं।mySQL दिनांक समय सीमा क्वेरी समस्या

अब तक अपनी क्वेरी इस तरह दिखता है:

SELECT * FROM util_audit WHERE DATED >= DATE(03/15/2012) AND DATED <= DATE(03/31/2012); 

अगर मैं का उपयोग

SELECT * FROM util_audit WHERE DATED >= DATE(03/15/2012); 

यह मेरे सारे रिकॉर्ड वापस आ जाएंगे, क्योंकि वे इस सप्ताह दिनांकित किया गया।

मैं भी इस की कोशिश की:

SELECT * FROM util_audit WHERE DATED >= '02/15/2012 00:00:00' AND DATED <= '03/31/2012 00:00:00'; 

और कुछ भी नहीं! यह शून्य पंक्तियों को वापस कर देगा, जब मुझे पता चलेगा कि मेरे पास इस महीने के 27 से आज तक की तारीख है। क्या मुझसे कोई चूक हो रही है? यह अपने आप पर क्यों काम करता है, लेकिन जब मैं दूसरी तारीख जोड़ता हूं? मैं शायद कुछ दिख रहा हूं।

उत्तर

44

प्रयास करें:

SELECT * FROM util_audit WHERE `DATED` BETWEEN "2012-03-15" AND "2012-03-31"; 
+1

यह काम किया, त्वरित उत्तर के लिए धन्यवाद! – Myy

+3

क्या होता है जब आपके पास अधिक खोज मानदंड होते हैं (उदाहरण के लिए चयन करें * उपयोग_ऑडिट से "2012-03-15" और "2012-03-31" और "booLive = 1) के बीच 'दिनांकित' कहां से? क्योंकि मुझे त्रुटियां मिलती हैं। – khany

+1

मैं उस त्रुटि को पुन: पेश नहीं कर सकता, लेकिन किसी भी मामले में आप हमेशा स्पष्टता के लिए ब्रांड्स का उपयोग कर सकते हैं, उदा। 'चुनें * ut_audit से (दिनांक 2012-03-15" और "2012-03-31") और booLive = 1; ' –

6

जहाँ तक मुझे पता है, MySql में दिनांक प्रारूप yyyy-MM-dd hh:mm:ss साथ प्रतिनिधित्व कर रहे हैं इसलिए आप ऐसा करने की जरूरत:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED <= '2012-03-31 00:00:00'; 

या और भी बेहतर:

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-03-31 00:00:00'; 
+0

ये विधियां भी काम करती हैं, धन्यवाद! – Myy

9

कुछ किनारे के मामले हैं जिन्हें सही समाप्ति तिथि का उपयोग कर यहां पकड़ा जाना चाहिए, यदि नहीं 31 पर आइटम अनदेखी कर रहे हैं:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED <= '2012-03-31 23:59:59'; 

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-03-31 23:59:59'; 

या आप अंतिम तिथि नहीं आगे और उपयोग धक्का सकता है:

SELECT * FROM util_audit 
WHERE DATED >= '2012-02-15 00:00:00' AND DATED < '2012-04-01'; 

SELECT * FROM util_audit 
WHERE DATED BETWEEN '2012-02-15 00:00:00' AND '2012-04-01'; 

बस इस अपने आप को इसलिए यदि अन्य लोगों को यह पेज लगता है यह मदद करता है उम्मीद है कि बारे में जाना।

+1

मैंने गलती से इस सवाल को वोट दिया। यह वह दिनांक प्रारूप है जिसका मैंने उपयोग किया था! तो एक संपादन किया, मेरे वोट उलट दिया, और संपादन हटा दिया। उसके लिए खेद है। – Quaternion

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