PostgreSQL में, current_time
फ़ंक्शन समय क्षेत्र ऑफ़सेट सहित वर्तमान समय लौटाता है।
लौटाया गया समय वर्तमान लेनदेन के प्रारंभ समय पर आधारित है।
सिंटैक्स
आप इसे निम्न में से किसी भी तरीके से उपयोग कर सकते हैं:
current_time
current_time(x)
जहां x
एक वैकल्पिक सटीक पैरामीटर है, जिसके कारण परिणाम को x
. पर गोल कर दिया जाता है सेकंड फ़ील्ड में भिन्नात्मक अंकों की संख्या।
एक सटीक पैरामीटर (पहला सिंटैक्स) के बिना, परिणाम पूर्ण उपलब्ध सटीकता के लिए दिया जाता है।
उदाहरण - पूर्ण परिशुद्धता
पूर्ण उपलब्ध सटीकता का उपयोग करके परिणाम प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।
SELECT current_time;
परिणाम:
14:33:30.731384+10
उदाहरण - विशिष्ट परिशुद्धता
सटीकता निर्दिष्ट करने का तरीका दिखाने के लिए यहां एक उदाहरण दिया गया है।
SELECT current_time(0);
परिणाम:
15:35:38+10
इस उदाहरण में, मैंने शून्य की सटीकता निर्दिष्ट की, जिसका अर्थ है कि कोई भी आंशिक सेकंड वापस नहीं किया गया।
यहां एक और उदाहरण दिया गया है जहां मैं कई भिन्न सेकंड निर्दिष्ट करता हूं।
SELECT current_time(3);
परिणाम:
15:37:43.385+10
लेन-देन
वास्तविक समय वर्तमान लेनदेन के प्रारंभ समय पर आधारित होता है। इसलिए, लेन-देन की प्रगति के रूप में यह नहीं बदलता है।
यह एकल लेन-देन को "वर्तमान" समय की एक सुसंगत धारणा रखने की अनुमति देता है, ताकि एक ही लेन-देन के भीतर कई संशोधनों में एक ही समय की मुहर लगे।
यहां एक उदाहरण दिया गया है जो इसे प्रदर्शित करता है।
BEGIN;
SELECT current_time;
SELECT pg_sleep(5);
SELECT current_time;
SELECT pg_sleep(5);
SELECT current_time;
COMMIT;
psql में उस लेन-देन को निष्पादित करते समय मेरे टर्मिनल का पूरा आउटपुट यहां दिया गया है:
postgres=# BEGIN; BEGIN postgres=# SELECT current_time; current_time -------------------- 09:09:27.524852+10 (1 row) postgres=# SELECT pg_sleep(5); SELECT current_time; SELECT pg_sleep(5); SELECT current_time; COMMIT; pg_sleep ---------- (1 row) postgres=# SELECT current_time; current_time -------------------- 09:09:27.524852+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT current_time; current_time -------------------- 09:09:27.524852+10 (1 row) postgres=# COMMIT; COMMIT
सभी तीन समय मान समान हैं, भले ही pg_sleep()
लेन-देन के भीतर प्रत्येक कथन के बीच निष्पादन में देरी के लिए फ़ंक्शन का उपयोग किया गया था।
यह statement_timestamp()
. के विपरीत है जो करता है प्रत्येक कथन के साथ बदलें।
एक स्टेटमेंट में कई कॉल
कथन के आगे बढ़ने पर यह भी नहीं बदलता है।
\x
SELECT
current_time,
pg_sleep(5),
current_time,
pg_sleep(5),
current_time;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
current_time | 09:11:16.09445+10 pg_sleep | current_time | 09:11:16.09445+10 pg_sleep | current_time | 09:11:16.09445+10
सभी तीन समय मान समान हैं, भले ही pg_sleep()
फ़ंक्शन का उपयोग प्रत्येक कॉल के बीच current_time
. के निष्पादन में देरी के लिए किया गया था ।
यह clock_timestamp()
. के विपरीत है फ़ंक्शन, जो करता है कथन के माध्यम से आगे बढ़ने पर इसे बदलें।
वैसे, मैंने परिणामों को थोड़ा अधिक कॉम्पैक्ट बनाने के लिए लंबवत आउटपुट (विस्तारित आउटपुट के रूप में भी जाना जाता है) का उपयोग किया।
आप \x
. का उपयोग करके psql में विस्तारित आउटपुट को टॉगल कर सकते हैं ।