फ़ंक्शन प्रकार रिज़ॉल्यूशन . के लिए धन्यवाद हम date
भी पास कर सकते हैं मान generate_series()
. के लिए क्योंकि एक अंतर्निहित . है date
. से डाली गई करने के लिए timestamp
साथ ही date
. से करने के लिए timestamptz
. अस्पष्ट होगा, लेकिन timestamptz
"पसंदीदा" . है "दिनांक/समय प्रकार" के बीच। विस्तृत विवरण:
- PostgreSQL में दो तिथियों के बीच समय श्रृंखला बनाना
केवल date
. के लिए स्थानीय समय 00:00
कास्ट में माना जाता है। ध्यान रखें कि यदि आप date
. का उपयोग करते हैं तो वर्तमान समय क्षेत्र सेटिंग सीधे परिणाम को प्रभावित करती है इनपुट के रूप में, जाहिर है, '2014-01-10 00:00' न्यूयॉर्क की तुलना में टोकियो में एक अलग समय का प्रतिनिधित्व करता है।
Postgres कैसे तय करता है कि कौन से प्रकार स्वीकार्य हैं?
पोस्टग्रेज मूल रूप से तीन प्रकार की जातियों के बीच अंतर करता है:
Explicit casts
.. CAST
. का उपयोग करते समय या ::
सिंटैक्स.Assignment cast
.. किसी लक्ष्य कॉलम को मान असाइन किए जाने पर निहित कास्ट।Implicit cast
.. अन्य सभी भावों में निहित है।
एक अंतर्निहित होना चाहिए सिस्टम में इनपुट प्रकार से अपेक्षित प्रकार में पंजीकृत कास्ट एक फ़ंक्शन को चुपचाप एक इनपुट मान को स्वीकार (और कनवर्ट) करने के लिए करता है।
यह देखने के लिए कि से . किन जातियों को परिभाषित किया गया है timestamptz
, आप कैटलॉग तालिका को क्वेरी कर सकते हैं pg_cast
:
SELECT castsource::regtype, casttarget::regtype, castcontext
FROM pg_cast
WHERE casttarget = 'timestamptz'::regtype;
castsource | casttarget | castcontext
-----------------------------+--------------------------+-------------
abstime | timestamp with time zone | i
date | timestamp with time zone | i
timestamp without time zone | timestamp with time zone | i
timestamp with time zone | timestamp with time zone | i
ये सभी जातियां अंतर्निहित हैं . castcontext
. पर प्रति दस्तावेज़ीकरण :
इंगित करता है कि किन संदर्भों में कलाकारों को आमंत्रित किया जा सकता है। e
का अर्थ केवल अस्पष्ट कलाकारों के रूप में है (CAST
. का उपयोग करके) या ::
वाक्य - विन्यास)। a
का अर्थ है एक लक्ष्य कॉलम के साथ-साथ स्पष्ट रूप से स्पष्ट रूप से इनअसाइनमेंट। i
अर्थ स्पष्ट रूप से भावों में, साथ ही साथ अन्य मामलों में।
बोल्ड जोर मेरा।