Laravel 4+ आपको ये तरीके प्रदान करता है:whereDay()
, whereMonth()
, whereYear()
(#3946
) और whereDate()
(#6879
)।
वे SQL DATE()
करते हैं आपके लिए काम करते हैं, और SQLite के अंतरों को प्रबंधित करते हैं।
आपका परिणाम इस प्रकार प्राप्त किया जा सकता है:
->whereDate('date', '<=', '2014-07-10')
अधिक उदाहरणों के लिए, #3946 का पहला संदेश देखें और यह लारावेल डेली लेख ।
अपडेट करें: यद्यपि उपरोक्त विधि सुविधाजनक है, जैसा कि अर्थ ने उल्लेख किया है, यह बड़े डेटासेट पर अक्षम है, क्योंकि DATE()
SQL फ़ंक्शन को प्रत्येक रिकॉर्ड पर लागू करना होता है, इस प्रकार संभावित अनुक्रमणिका को त्यागना होता है।
तुलना करने के कुछ तरीके यहां दिए गए हैं (लेकिन कृपया नीचे नोट पढ़ें):
->where('date', '<=', '2014-07-10 23:59:59')
->where('date', '<', '2014-07-11')
// '2014-07-11'
$dayAfter = (new DateTime('2014-07-10'))->modify('+1 day')->format('Y-m-d');
->where('date', '<', $dayAfter)
नोट:
- 23:59:59 ठीक है (अभी के लिए) 1 सेकंड की सटीकता के कारण, लेकिन इस लेख पर एक नज़र डालें:23:59:59 दिन का अंत नहीं है। नहीं, सच में!
- "शून्य तिथि" मामले को ध्यान में रखें ("0000-00-00 00:00:00")। हालांकि, इन "शून्य तिथियों" से बचा जाना चाहिए, वे बहुत सारी समस्याओं का स्रोत हैं। यदि आवश्यक हो तो फ़ील्ड को खाली करने योग्य बनाएं।