एक्सट्रेक्ट फ़ंक्शन उपयोगी लगता है और दिनांक फ़ंक्शन जो मैंने पाया है वह मेरी कुछ समस्याओं को हल करता है, लेकिन क्या 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 वास्तव में दिनांक सीमाओं से निपटने में खराब है, भले ही फ़ील्ड अनुक्रमित हो। यदि आप सावधान नहीं हैं तो संभवतः आप एक पूर्ण तालिका स्कैन के साथ समाप्त होने जा रहे हैं।