सबसे पहले, आपके सभी उत्तरों के लिए धन्यवाद। उनमें से कोई भी, जैसा कि है, मेरी समस्या का अच्छा समाधान नहीं था, लेकिन, आपके बचाव के लिए, मुझे यह जोड़ना चाहिए कि मैंने सभी आवश्यकताएं नहीं दीं। लेकिन हर कोई मेरी समस्या के बारे में सोचने में मेरी मदद करता है और आपके कुछ विचार मेरे अंतिम समाधान का हिस्सा हैं।
तो मेरा अंतिम समाधान, डीबी पक्ष पर, varchar . का उपयोग करना है फ़ील्ड (10 वर्णों तक सीमित) और उसमें दिनांक को एक स्ट्रिंग के रूप में, ISO प्रारूप (YYYY-MM-DD) में 00 के साथ संग्रहीत करना महीने और दिन के लिए जब कोई महीना और/या दिन न हो (जैसे तारीख MySQL में फ़ील्ड)। इस तरह, यह क्षेत्र किसी भी डेटाबेस के साथ काम कर सकता है, एक साधारण क्लाइंट (जैसे mysql क्लाइंट, phpmyadmin, आदि) का उपयोग करके डेटा को सीधे और आसानी से पढ़ा, समझ और संपादित किया जा सकता है। यह एक आवश्यकता थी। इसे बिना किसी रूपांतरण आदि के एक्सेल/सीएसवी को भी निर्यात किया जा सकता है। नुकसान यह है कि प्रारूप लागू नहीं है (Django को छोड़कर)। कोई 'नहीं एक तारीख' लिख सकता है या प्रारूप में कोई गलती करें और डीबी इसे स्वीकार कर लेगा (यदि आपके पास इस समस्या के बारे में कोई विचार है...)।
इस तरह सभी विशेष . करना भी संभव है तारीख . की क्वेरीज़ अपेक्षाकृत आसानी से क्षेत्र। WHERE के साथ प्रश्नों के लिए:<,>, <=,>=और =सीधे काम करें। IN और BETWEEN क्वेश्चन सीधे भी काम करते हैं। दिन या महीने के हिसाब से पूछताछ के लिए आपको बस इसे EXTRACT (DAY|MONTH ...) के साथ करना होगा। सीधे काम करने का आदेश भी। इसलिए मुझे लगता है कि इसमें सभी क्वेरी आवश्यकताओं को शामिल किया गया है और अधिकतर कोई जटिलता नहीं है।
Django पक्ष पर, मैंने 2 चीजें कीं। सबसे पहले, मैंने एक PartialDate
बनाया है ऑब्जेक्ट जो अधिकतर datetime.date
like जैसा दिखता है लेकिन महीने और/या दिन के बिना समर्थन की तारीख। इस ऑब्जेक्ट के अंदर मैं दिनांक रखने के लिए datetime.datetime ऑब्जेक्ट का उपयोग करता हूं। मैं घंटे और मिनटों का उपयोग ध्वज के रूप में कर रहा हूं जो बताता है कि क्या महीना और दिन 1 पर सेट होने पर मान्य हैं। यह वही विचार है जो steveha प्रस्ताव लेकिन एक अलग कार्यान्वयन के साथ (और केवल ग्राहक पक्ष पर)। datetime.datetime
. का उपयोग करना ऑब्जेक्ट मुझे तिथियों (सत्यापन, तुलना, आदि) के साथ काम करने के लिए बहुत सारी अच्छी सुविधाएं देता है।
दूसरे, मैंने एक PartialDateField
. बनाया है जो ज्यादातर PartialDate
. के बीच रूपांतरण से संबंधित है ऑब्जेक्ट और डेटाबेस।
अब तक, यह बहुत अच्छी तरह से काम करता है (मैंने ज्यादातर अपने व्यापक यूनिट परीक्षण पूरे कर लिए हैं)।