यह SQLite:
date(date, '-' || strftime('%w', date) || ' days')
है, AFAIK, दिनांक
से दिन-दर-सप्ताह संख्या दिनों (अर्थात रविवार के लिए 0, सोमवार के लिए 1, ...) को घटा रहा है और फिर परिणाम को वापस दिनांक
. में कनवर्ट करना; दिनांक फ़ंक्शन संदर्भ
देखें विवरण के लिए।
मुझे लगता है कि PostgreSQL के बराबर होगा:
d - extract(dow from d)::int
जहां d
आपकी तिथि है; किसी तिथि से एक पूर्णांक घटाने पर दिनों की संख्या घट जाती है। अगर डी
एक टाइमस्टैम्प है, तो आपको कुछ कास्टिंग जोड़ने की आवश्यकता हो सकती है। वहाँ है date_trunc('week ', 'डी')
साथ ही, लेकिन वह सोमवार से दिनों की संख्या शुरू कर देता है ताकि आप एक-एक करके उससे दूर हो जाएं।
यहां दिनांक
के साथ SQLite का त्वरित विश्लेषण है वेरिएबल को d
. से बदल दिया गया है date()
. के साथ भ्रम से बचने के लिए समारोह:
date(d, '-' || strftime('%w', d) || ' days')
सबसे पहले, ||
मानक SQL स्ट्रिंग संयोजन ऑपरेटर है। strftime
समारोह
एक सामान्य प्रयोजन दिनांक और समय फ़ॉर्मेटर है जो POSIX
से आता है।; %w
प्रारूप विनिर्देशक का अर्थ है "सप्ताह का दिन एक संख्या के रूप में रविवार का दिन शून्य है"; तो strftime
कॉल आपको रविवार के लिए 0, सोमवार के लिए 1 और इसी तरह शनिवार के लिए 6 तक देता है। अगर डी
मंगलवार है, फिर strftime
कॉल 2 देगा और पूरी बात इस प्रकार समाप्त होगी:
date(d, '-2 days')
SQLite के लिए संशोधक date
समारोह
विभिन्न रूप हैं लेकिन '-2 दिन'
इसका मतलब वही है जो आप सोचेंगे:d
. से दो दिन घटाएं . समग्र परिणाम यह है कि आपको d
. मिलता है सप्ताह के लिए छोटा (जहाँ रविवार को सप्ताह का पहला दिन माना जाता है)।
PostgreSQL की तरफ:
d - extract(dow from d)::int
हम extract<से शुरू कर सकते हैं /कोड>
; निकालें
किसी दिनांक या समय के विशिष्ट भागों को निकालने के लिए उपयोग किया जाता है और dow
इसका अर्थ है "सप्ताह का दिन एक संख्या के रूप में रविवार का दिन शून्य है"। जाना पहचाना? फिर ::int
DOW नंबर को एक पूर्णांक में कास्ट करता है और इसकी आवश्यकता होती है क्योंकि DOW वास्तव में एक डबल सटीक मान के रूप में सामने आता है और PostgreSQL में किसी दिनांक से डबल को घटाने के लिए कोई ऑपरेटर परिभाषित नहीं है; कास्ट को मानक रूप में cast(x as int)
. के रूप में भी लिखा जा सकता है . जब आप PostgreSQL में किसी दिनांक से एक पूर्णांक घटाते हैं, तो आप उसे कई दिनों तक घटाते हैं; आप -अंतराल '3 दिन'
. जैसी बातें कहकर अधिक स्पष्ट हो सकते हैं लेकिन यह इस मामले में और अधिक शोर जोड़ देगा इसलिए मैंने सादगी का विकल्प चुना। यदि यह मंगलवार है, तो हमारा PostgreSQL संस्करण इस तरह दिखता है:
d - 2
और यह वही है:
d - interval '2 days'
और घटाव के बाद हम रविवार को वापस आएंगे। date_trunc
PostgreSQL में लेकिन वह रविवार नहीं सोमवार को छोटा होगा।