2013-02-08 10 views
13

मुझे मेरे पास चलाने वाले webservice के लिए उपयोगकर्ता पहुंच/दृश्य लॉग संग्रहीत करने वाली तालिका मिली है। यह समय को टाइमस्टैम्प के रूप में ट्रैक करता है, हालांकि जब मैं कुल रिपोर्टिंग करता हूं तो मुझे लगता है कि मैं केवल दिन के बारे में परवाह करता हूं, समय नहीं।समय-समय पर समयावधि टाइमस्टैम्प,

मैं वर्तमान में निम्न क्वेरी चल रहा हूँ:

SELECT user_logs.timestamp 
    FROM user_logs 
     WHERE user_logs.timestamp >= %(timestamp_1)s 
      AND user_logs.timestamp <= %(timestamp_2)s 
       ORDER BY user_logs.timestamp 

वहाँ जहां स्थिति पर वे सवाल का कोई फर्क नहीं करना चाहिए अक्सर अन्य कर रहे हैं। मैं पोस्टग्रेज़ का उपयोग कर रहा हूं लेकिन मुझे लगता है कि जो भी सुविधा उपयोग की जाती है वह अन्य भाषाओं में काम करेगी।

मैं परिणामों को एक पायथन लिपि में खींचता हूं जो प्रति तारीख विचारों की संख्या की गणना करता है लेकिन यदि डेटाबेस समूह और मेरे लिए गिनती कर सकता है तो यह मुझे और अधिक समझ में आता है।

मैं इसे कैसे हटा सकता हूं ताकि यह दिन तक समूहित हो और उस समय को अनदेखा कर सके?

उत्तर

28
SELECT date_trunc('day', user_logs.timestamp) "day", count(*) views 
FROM user_logs 
WHERE user_logs.timestamp >= %(timestamp_1)s 
    AND user_logs.timestamp <= %(timestamp_2)s 
group by 1 
ORDER BY 1 
+21

पोस्टग्रेएसक्यूएल शॉर्टकट: 'date_trunc ('day', user_logs.timestamp) के बजाय' user_logs.timestamp :: date' '। –

+0

आप दोनों को धन्यवाद :) – Teifion

+4

@ इगोर नोटिस कि 'date date 'पर एक कास्ट समय क्षेत्र जानकारी खो देता है जबकि' date_trunc' नहीं करता है। यह महत्वपूर्ण हो सकता है जब आप उसी दिन दो साल के लिए तुलना करना चाहते हैं और वह दिन एक समय क्षेत्र से दूसरे में बदल गया। –

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