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

MySQL में PostgreSQL का date_trunc

<ब्लॉकक्वॉट>

एक्सट्रेक्ट फ़ंक्शन उपयोगी लगता है और दिनांक फ़ंक्शन जो मैंने पाया है वह मेरी कुछ समस्याओं को हल करता है, लेकिन क्या PostgreSQL के date_trunc को दोहराने का कोई तरीका है?

दरअसल, EXTRACT ऐसा लगता है कि यह इस विशिष्ट मामले के लिए निकटतम मैच होने जा रहा है।

पीजी में आपका मूल कोड:

WHERE date_trunc('month', QUERY_DATE) BETWEEN 
    date_trunc('month', now()) - INTERVAL '4 MONTH' AND 
    date_trunc('month', now() - INTERVAL '1 WEEK')

EXTRACT का उपयोग करना :

WHERE EXTRACT(YEAR_MONTH FROM QUERY_DATE)
      BETWEEN
          EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 4 MONTH)
      AND
          EXTRACT(YEAR_MONTH FROM NOW() - INTERVAL 1 WEEK)

हालांकि यह कार्यात्मक रूप से समान होना चाहिए, यह वास्तव में तुलना करने से पहले तिथियों को YYYYMM स्ट्रिंग में जोड़ रहा है।

एक अन्य विकल्प DATE_FORMAT . का उपयोग करना होगा दिनांक स्ट्रिंग का पुनर्निर्माण करने के लिए और इसे महीने की शुरुआत के लिए बाध्य करने के लिए:

WHERE DATE_FORMAT(QUERY_DATE, '%Y-%m-01')
      BETWEEN
          DATE_FORMAT(NOW() - INTERVAL 4 MONTH, '%Y-%m-01')
      AND
          DATE_FORMAT(NOW() - INTERVAL 1 WEEK, '%Y-%m-01')

साथ ही, ध्यान रखें कि MySQL वास्तव में दिनांक सीमाओं से निपटने में खराब है, भले ही फ़ील्ड अनुक्रमित हो। यदि आप सावधान नहीं हैं तो संभवतः आप एक पूर्ण तालिका स्कैन के साथ समाप्त होने जा रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL के साथ धीमी क्वेरी से निपटना

  2. पोस्टग्रेज में ISO-8601 ग्रेगोरियन डेट टेबल कैसे बनाएं

  3. स्कीमा में पोस्टग्रेस्क्ल अनुक्रम नेक्स्टवल

  4. Linux पर PostgreSQL डेटाबेस डिफ़ॉल्ट स्थान

  5. आर में int16/uint16 में PostgreSQL बाइटिया कॉलम हेक्स को डीकोड कैसे करें?