PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

कैसे date_trunc () PostgreSQL में काम करता है

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. चाइल्ड टेबल इंसर्शन के लिए ट्रिगर बनाना भ्रमित करने वाली त्रुटि देता है

  2. पासवर्ड के बिना psql कमांड के साथ बैच फ़ाइल चलाएँ

  3. मैं विंडोज़ पर PostgreSQL के लिए केवल क्लाइंट टूल्स कैसे स्थापित करूं?

  4. Postgresql ट्रंकेशन स्पीड

  5. अजीब SQLAlchemy त्रुटि संदेश:लेखन त्रुटि:'तानाशाह' वस्तु अनुक्रमण का समर्थन नहीं करता