PostgreSQL में, date_trunc()
फ़ंक्शन किसी दिनांक/समय मान को निर्दिष्ट सटीकता के अनुसार छोटा करता है।
यह एक निर्दिष्ट समय क्षेत्र में एक निर्दिष्ट परिशुद्धता के लिए मान को छोटा भी कर सकता है।
आप इसे trunc()
. के दिनांक संस्करण के रूप में सोच सकते हैं फ़ंक्शन (जो संख्याओं को छोटा करता है)।
सिंटैक्स
वाक्य रचना इस प्रकार है:
date_trunc(field, source [, time_zone ])
कहां:
field
वह सटीकता है जिसके लिए इनपुट मान को छोटा करना है (उदाहरण के लिएmonth
,hour
, आदि)। इस तर्क के लिए स्वीकार्य मूल्यों की पूरी सूची के लिए नीचे देखें।source
टाइमस्टैम्प . प्रकार का मान व्यंजक है , समय क्षेत्र के साथ टाइमस्टैम्प , या अंतराल . ध्यान दें कि तारीख . प्रकार के मान और समय टाइमस्टैम्प . पर स्वचालित रूप से डाली जाती हैं या अंतराल , क्रमशः।- वैकल्पिक
time_zone
भिन्न समय क्षेत्र निर्दिष्ट करने के लिए तर्क दिया जा सकता है।
field
तर्क निम्न में से कोई भी हो सकता है:
- माइक्रोसेकंड
- मिलीसेकंड
- दूसरा
- मिनट
- घंटा
- दिन
- सप्ताह
- माह
- तिमाही
- वर्ष
- दशक
- शताब्दी
- सहस्राब्दी
मूल उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT date_trunc('hour', timestamp '2020-06-30 17:29:31');
परिणाम:
2020-06-30 17:00:00
हम देख सकते हैं कि दिनांक का समय भाग 17:29:31
से छोटा कर दिया गया है से 17:00:00
. ऐसा इसलिए है क्योंकि मैंने hour
. का उपयोग किया है पहले तर्क के लिए।
यहाँ यह पहले तर्क के लिए अलग-अलग मानों के साथ है।
\x
SELECT
date_trunc('minute', timestamp '2020-06-30 17:29:31'),
date_trunc('day', timestamp '2020-06-30 17:29:31'),
date_trunc('month', timestamp '2020-06-30 17:29:31'),
date_trunc('year', timestamp '2020-06-30 17:29:31');
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
date_trunc | 2020-06-30 17:29:00 date_trunc | 2020-06-30 00:00:00 date_trunc | 2020-06-01 00:00:00 date_trunc | 2020-01-01 00:00:00
इस मामले में मैंने इस्तेमाल किया \x
विस्तारित प्रदर्शन/ऊर्ध्वाधर आउटपुट को सक्षम करने के लिए, ताकि परिणामों को पढ़ना आसान हो।
समय क्षेत्र के साथ
WITH TIME ZONE
को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है विकल्प।
SELECT
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+00'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+01');
परिणाम:
date_trunc | 2020-07-01 03:00:00+10 date_trunc | 2020-07-01 02:00:00+10
जब मैंने इन उदाहरणों को चलाया तो स्थानीय समयक्षेत्र ऑस्ट्रेलिया/ब्रिस्बेन था।
आप तीसरे तर्क के रूप में पूर्ण समयक्षेत्र का नाम भी जोड़ सकते हैं।
SELECT
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland');
परिणाम:
date_trunc | 2020-06-30 15:00:00+10 date_trunc | 2020-06-30 15:00:00+10
अंतराल के साथ
यहां एक उदाहरण दिया गया है जो दिनांक के बजाय अंतराल मान का उपयोग करता है।
SELECT date_trunc('hour', interval '7 days 5 hours 15 minutes');
परिणाम:
7 days, 5:00:00