इसमें कोई फर्क नही है। मैनुअल से तीन उद्धरण:
1)
ये SQL- मानक कार्य वर्तमान लेनदेन के प्रारंभ समय के आधार पर सभी रिटर्न मान प्रदान करते हैं:
...
...
CURRENT_TIMESTAMP
2)
transaction_timestamp()
के बराबर है CURRENT_TIMESTAMP
, लेकिन यह स्पष्ट रूप से प्रतिबिंबित करता है कि यह क्या लौटाता है।
3)
now()
के बराबर एक पारंपरिक PostgreSQL है transaction_timestamp()
।
बोल्ड जोर मेरा। CURRENT_TIMESTAMP
, transaction_timestamp()
और now()
ऐसा बिल्कुल एक ही। CURRENT_TIMESTAMP
एक समारोह के लिए एक वाक्यात्मक विषमता है, जिसमें कोष्ठक की जोड़ी नहीं है। यह SQL मानक के अनुसार है।
यदि आप SQL कथन में फ़ंक्शन कॉल के लिए स्तंभ उपनाम घोषित नहीं करते हैं, तो उपनाम फ़ंक्शन के नाम के लिए डिफॉल्ट करता है। आंतरिक रूप से, मानक-एसक्यूएल के CURRENT_TIMESTAMP
साथ लागू किया जाता है now()
। 9.6 के बाद के पोस्टग्रेज में परिणामी कॉलम नाम से पता चलता है , जो "अब" था, लेकिन पोस्टग्रेज 10 में "current_timestamp" में बदल गया।
transaction_timestamp()
वही करता है, लेकिन यह एक उचित पोस्टग्रेज फ़ंक्शन है, इसलिए डिफ़ॉल्ट रूप से उपनाम हमेशा "लेनदेन_टिमस्टैम्प" रहा है।
विशेष इनपुट स्थिरांक के साथ इन कार्यों में से किसी को भी भ्रमित न करें । यह विशिष्ट तिथि / समय / टाइमस्टैम्प मूल्यों के लिए कई उल्लेखनीय शॉर्टहैंड्स में से एक है, जो मैनुअल को उद्धृत करता है:'now'
... जिसे पढ़ते समय साधारण दिनांक / समय मान में बदल दिया जाएगा। (विशेष रूप से, now
और संबंधित तार पढ़े जाते ही एक विशिष्ट समय मान में बदल जाते हैं।) SQL कमांड में स्थिरांक के रूप में उपयोग किए जाने पर इन सभी मानों को एकल उद्धरणों में संलग्न करने की आवश्यकता होती है।
यह इस भ्रम में जोड़ सकता है कि (कम से कम पोस्टग्रेज 12 तक) किसी भी अग्रणी और अनुगामी रिक्त स्थान और कोष्ठक ( {[( )]}
) को उन विशेष इनपुट मानों से छंटनी की जाती है। इसलिए 'now()'::timestamptz
- या 'now()'
जहां कोई स्पष्ट प्रकार कास्ट की आवश्यकता नहीं है - यह भी मान्य है और now()
अधिकांश टाइमटेस्ट में फ़ंक्शन के समान टाइमस्टैम्प का मूल्यांकन करने के लिए होता है । लेकिन उन हैं स्थिरांक और आम तौर पर नहीं है कि तुम क्या उदाहरण के लिए स्तंभ डिफ़ॉल्ट के रूप में चाहते हैं।
db <> यहाँ field
पुरानी SQL fiddle
उल्लेखनीय विकल्प हैं statement_timestamp()
और clock_timestamp()
। नियम पुस्तिका:
statement_timestamp()
वर्तमान कथन का प्रारंभ समय (अधिक विशेष रूप से, क्लाइंट से नवीनतम कमांड संदेश की प्राप्ति का समय) देता है। [...]
clock_timestamp()
वास्तविक वर्तमान समय लौटाता है, और इसलिए एक SQL कमांड के भीतर भी इसका मूल्य बदल जाता है।
नोट: statement_timestamp()
है STABLE
के रूप में ऊपर (हमेशा एक ही एसक्यूएल आदेश के भीतर एक ही मान देता है)। लेकिन clock_timestamp()
जरूरी तो है ही VOLATILE
। अंतर महत्वपूर्ण हो सकता है।
where items.createddate > now()
:?