2010-12-27 10 views
18

नीचे दी गई क्वेरी के लिए, मैं पंक्तियों की संख्या को कैसे गिन सकता हूं जहां datesent 24 घंटे से कम पुराना है? (क्षेत्र datesent एक टाइमस्टैम्प है)।पंक्तियों की गणना करना जहां टाइमस्टैम्प 24 घंटे से कम

अग्रिम धन्यवाद,

जॉन

$message = "SELECT datesent, recipient 
       FROM privatemessage 
       WHERE recipient = '$u'"; 


    $messager = mysql_query($message); 

$messagearray = array(); 
+0

मैंने 'css' टैग हटा दिया क्योंकि इसका प्रश्न के साथ कुछ लेना देना नहीं था। –

उत्तर

5

आप DATE_SUB फ़ंक्शन का उपयोग कर सकते हैं। धारा में वर्तमान तारीख से एक दिन घटाएं।

कुछ

तरह
DATE_SUB(NOW(), INTERVAL 1 DAY) 

संपादित करें: बदल CURTIME() के लिए अब()

+0

'कर्टिमी' केवल समय, समय और समय नहीं देता है। –

+0

CURTIME बस वर्तमान समय लौटाता है, वर्तमान तिथि से कोई लेना देना नहीं है। आप इसके बजाय अब() पास करना चाहते हैं। – TehShrike

3
$message="select count(1) 
from privatemessage 
where datesent>=date_sub(now(), 24 hours) 
and recipient='$u'" 

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

+0

यह प्रत्येक पंक्ति की गिनती वापस कर देगा, क्योंकि यह तुलना कर रहा है कि मौजूदा मान एक ही मान के बराबर या बराबर है, इससे 24 घंटे घटाना ... तालिका में कॉलम पर फ़ंक्शन निष्पादित करना भी एक अनुक्रमणिका है, यदि एक अस्तित्व में था, ऑपरेशन के लिए इस्तेमाल नहीं किया जा सका। –

+0

ठीक है आप हैं। क्षमा करें, मैं MySQL का उपयोग नहीं करता, इसलिए मुझे इसे पोस्ट करने से पहले समाधान का परीक्षण करने का मौका नहीं मिला। –

+1

इकाई एचओआर (एकवचन) है, न कि HOURS। जो लिंक आपने पहले ही प्रदान किया है उसे देखें: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add –

48

उपयोग:

SELECT COUNT(*) AS cnt 
    FROM PRIVATEMESSAGE pm 
WHERE pm.datesent >= DATE_SUB(NOW(), INTERVAL 1 DAY) 
+0

यह एकमात्र उत्तर है जो सही मान पास करता है DATE_SUB – TehShrike

+0

के पहले पैरामीटर में धन्यवाद ... यह आशाजनक लग रहा है। लेकिन मुझे यह देखने के लिए वास्तव में परिणाम को गूंजने में परेशानी हो रही है कि यह काम करता है या नहीं। मैं कुल कैसे गूंज सकता हूं? – John

+0

@ जॉन: मैंने कॉलम उपनाम को परिभाषित करने के लिए अद्यतन किया - "cnt" वह है जिसे आप कॉलम के मान प्राप्त करने के लिए PHP में संदर्भित करेंगे। –

0

मैं देख रहा हूँ कि यह एक पुराना है हालांकि एक के लिए कोई भी जो यहां बाद में ऑनलाइन खोज को कम करता है, मैं यह स्पष्ट करना चाहता हूं कि सवाल टाइमटाम्प के बारे में है, समय-समय पर नहीं। मुझे टाइमस्टैम्प के आधार पर एक गिनती की आवश्यकता थी। आसान फिक्स डेटाटाइम को unix_timestamp में कनवर्ट करना है। MySQL 5.7

SELECT COUNT(*) AS cnt 
FROM PRIVATEMESSAGE pm 
WHERE pm.datesent >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) 
संबंधित मुद्दे