2011-03-03 22 views
117

में बराबर या आज की तुलना में अधिक से अधिक क्या निम्न करने के लिए सबसे अच्छा तरीका है:Datetime MySQL

SELECT * FROM users WHERE created >= today; 

नोट: बनाया गया एक datetime क्षेत्र है।

उत्तर

223
SELECT * FROM users WHERE created >= CURDATE(); 

लेकिन मुझे लगता है तुम्हारा मतलब created < today

+6

'CURDATE()' वापसी केवल तारीख नहीं –

+3

नहीं मेरा मतलब था = = लेकिन धन्यवाद CURDATE() मुझे क्या चाहिए! – n00b

+13

@ n00b आपके पास भविष्य में कौन से उपयोगकर्ता बनाए गए हैं ..? दिलचस्प =) मैं यह देखने के लिए इसका उपयोग कर रहा था कि कोई पोस्ट अभी तक समाप्त हो गया है या नहीं। –

23
SELECT * FROM users WHERE created >= NOW(); 

यदि कॉलम डेटाटाइम प्रकार है।

+1

मैं आज मतलब अब नहीं: डी मैं जरूरत आज 2011-03-03 नहीं 2011-03-03 14:02:02 – n00b

+0

@ n00b की तरह: यह रिटर्न पंक्तियों आज की तुलना में अधिक चिंता मत करो जाएगा अगर समय शामिल है –

+2

कहें कि यह 2011-02-02 14:02:02 - 10:02:02 पर बनाए गए उपयोगकर्ता आपके संस्करण में वापस नहीं आएंगे, भले ही वे "आज" बनाए गए हों :) – n00b

57
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW()) 

और अधिक पढ़ें: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html

+3

शायद मुझे कुछ याद आ रहा है, लेकिन DATETIME प्रकारों के साथ, CURDATE() समाधान काम नहीं करता है। यह करता है – Jahmic

+0

प्लस इसमें बहुत समय लगता है क्योंकि DATE() फ़ंक्शन के माध्यम से DATETIME को आज तक कनवर्ट करने का ओवरहेड है और फिर उस स्थिति की तुलना कर रहा है। – roopunk

12

तो 'बनाया' datetime प्रकार

SELECT * FROM users WHERE created < DATE_ADD(CURDATE(), INTERVAL 1 DAY); 

CURDATE है() का अर्थ है '2013-05-09 00:00:00'

+0

इसके लिए धन्यवाद। मुझे वास्तव में DATE_SUB की आवश्यकता थी (उसी तरह प्रयोग किया जाता था), लेकिन यह मुझे सही रास्ते पर रख दिया। –

-4

आप सभी पंक्तियों को वापस कर सकते हैं और एक कथन के अंदर php datediff फ़ंक्शन का उपयोग करने से, हालांकि यह सर्वर पर अतिरिक्त लोड डाल देगा।

if(dateDiff(date("Y/m/d"), $row['date']) <=0){  
}else{  
echo " info here";  
} 
+2

डेटाबेस की तुलना में यह बहुत धीमी है – IgniteCoders

-1
SELECT * FROM table_name WHERE CONCAT(SUBSTRING(json_date, 11, 4) , '-', SUBSTRING(json_date, 7, 2) , '-', SUBSTRING(json_date, 3, 2)) >= NOW(); 

json_date [ "2011/05/11"]

+0

यह एक बहुत कच्चा समाधान है – IgniteCoders

0

नीचे कोड मेरे लिए काम किया।

declare @Today date 

Set @Today=getdate() --date will equal today  

Select * 

FROM table_name 
WHERE created <= @Today 
0

स्तंभ अनुक्रमणिका है और एक समारोह स्तंभ पर लागू किया जाता है तो सूचकांक काम नहीं करता है और पूर्ण तालिका स्कैन होता है, वास्तव में धीमी गति से क्वेरी के कारण।

सूचकांक का उपयोग करने के लिए और डेटाटाइम आज/वर्तमान तिथि के साथ तुलना करें, निम्नलिखित का उपयोग किया जा सकता है।

select * from users 
where created >= CONCAT(CURDATE(), ' 00:00:00') && created < CONCAT(CURDATE(), ' 23:59:59') 
संबंधित मुद्दे