मॉड्यूल पाठ (2/4)
दिनांक और टाइमस्टैम्प फ़ंक्शन
दिनांक और टाइमस्टैम्प हर जगह हैं: ऑर्डर, लॉगिन, ईवेंट, बिलिंग। में इस पाठ में हम देखेंगे कि किसी दिनांक (वर्ष, माह...) से भाग कैसे निकालें**, इसे छोटा करें इसे एक ग्रैन्युलैरिटी (माह, सप्ताह...) तक, **अंतराल** की गणना करें और अंतर, और विभिन्न अवधियों में तुलना करें।
आधार प्रकार
PostgreSQL अलग करता है:
DATE— केवल दिनांक, प्रारूपYYYY-MM-DD;TIMESTAMP— दिनांक + समय, कोई समय क्षेत्र नहीं;TIMESTAMPTZ— दिनांक + समय + समयक्षेत्र;INTERVAL- एक अवधि (जैसे'3 days','2 hours 30 minutes')।
हमारे ecommerce डेटासेट में:
| कॉलम | प्रकार |
|---|---|
customers.signed_up_on | DATE |
orders.ordered_at | TIMESTAMP |
orders.shipped_at | TIMESTAMP (NULL हो सकता है) |
उद्धरण - एक भाग पढ़ना
EXTRACT(part FROM date) एक संख्या निकालता है:
SELECT EXTRACT(YEAR FROM ordered_at) AS year,
EXTRACT(MONTH FROM ordered_at) AS month,
EXTRACT(DOW FROM ordered_at) AS day_of_week -- 0=domenica
FROM orders;सबसे अधिक उपयोग किए जाने वाले हिस्से: YEAR, MONTH, DAY, HOUR, MINUTE, DOW (दिन
सप्ताह 0-6 का), DOY (वर्ष का दिन)।
DATE_TRUNC - पूर्णांकित करना
DATE_TRUNC('part', date) दिनांक को विवरणात्मकता में "छोटा" कर देता है। यह है
महीने, सप्ताह, घंटे के अनुसार एकत्रीकरण के लिए आवश्यक:
-- Tutti gli ordini fatti in "marzo 2025" cadono nello stesso bucket:
SELECT DATE_TRUNC('month', ordered_at) AS month,
COUNT(*) AS order_count
FROM orders
GROUP BY month
ORDER BY month;वैध भाग: 'year', 'quarter', 'month', 'week', 'day',
'hour', 'minute', 'second'।
पठनीयता के लिए, जब समय की आवश्यकता नहीं होती है तो लोग अक्सर DATE पर जाते हैं:
DATE_TRUNC('month', ordered_at)::date.
अंतर और अंतराल
दो TIMESTAMP घटाने पर एक INTERVAL बनता है:
SELECT id,
shipped_at - ordered_at AS wait_time
FROM orders
WHERE shipped_at IS NOT NULL;INTERVAL शाब्दिक के साथ तुलना:
WHERE shipped_at - ordered_at > INTERVAL '1 day'किसी तारीख में दिन जोड़ना:
SELECT signed_up_on + INTERVAL '30 days' AS trial_expiration
FROM customers;इसे अजमाएं
गणना करें कि प्रति वर्ष कितने ऑर्डर दिए गए। दो कॉलम: वर्ष (पूर्णांक) और order_count. वर्ष के अनुसार क्रम बढ़ते हुए।
संकेत दिखाएँ
Extract(YEAR FROM order_at) एक NUMERIC लौटाता है: पठनीयता के लिए इसे ::int के साथ int में डालें।
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
2024 के प्रत्येक महीने के लिए, महीने का पहला दिन (कॉलम माह, प्रकार की तारीख) और ऑर्डर की संख्या दिखाएं। महीने के हिसाब से ऑर्डर करें.
संकेत दिखाएँ
DATE_TRUNC('महीना', order_at) महीने का पहला दिन टाइमस्टैम्प के रूप में लौटाता है; ::दिनांक इसे दिनांक में बदल देता है।
3 प्रयासों के बाद समाधान उपलब्ध है