PostgreSQL में, current_timestamp()
फ़ंक्शन वर्तमान दिनांक और समय देता है, जिसमें समय क्षेत्र ऑफ़सेट भी शामिल है।
लौटाया गया टाइमस्टैम्प वर्तमान लेन-देन के प्रारंभ समय पर आधारित है।
सिंटैक्स
आप इसे निम्न में से किसी भी तरीके से उपयोग कर सकते हैं:
current_timestamp
current_timestamp(x)
जहां x
एक वैकल्पिक सटीक पैरामीटर है, जिसके कारण परिणाम को x
. पर गोल कर दिया जाता है सेकंड फ़ील्ड में भिन्नात्मक अंकों की संख्या।
एक सटीक पैरामीटर (पहला सिंटैक्स) के बिना, परिणाम पूर्ण उपलब्ध सटीकता के लिए दिया जाता है।
उदाहरण - पूर्ण परिशुद्धता
पूर्ण उपलब्ध सटीकता का उपयोग करके परिणाम प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।
SELECT current_timestamp;
परिणाम:
2020-07-01 15:42:35.630594+10
उदाहरण - विशिष्ट परिशुद्धता
सटीकता निर्दिष्ट करने का तरीका दिखाने के लिए यहां एक उदाहरण दिया गया है।
SELECT current_timestamp(0);
परिणाम:
2020-07-01 15:42:58+10
इस उदाहरण में, मैंने शून्य की सटीकता निर्दिष्ट की, जिसका अर्थ है कि कोई भी आंशिक सेकंड वापस नहीं किया गया।
यहां एक और उदाहरण दिया गया है जहां मैं कई भिन्न सेकंड निर्दिष्ट करता हूं।
SELECT current_timestamp(3);
परिणाम:
2020-07-01 15:43:16.644+10
लेन-देन
वास्तविक टाइमस्टैम्प वर्तमान लेनदेन के प्रारंभ समय पर आधारित है। इसलिए, लेन-देन की प्रगति के रूप में यह नहीं बदलता है।
यह एकल लेन-देन को "वर्तमान" समय की एक सुसंगत धारणा रखने की अनुमति देता है, ताकि एक ही लेन-देन के भीतर कई संशोधनों में एक ही समय की मुहर लगे।
यहां एक उदाहरण दिया गया है जो इसे प्रदर्शित करता है।
BEGIN;
SELECT current_timestamp;
SELECT pg_sleep(5);
SELECT current_timestamp;
SELECT pg_sleep(5);
SELECT current_timestamp;
COMMIT;
psql में उस लेन-देन को निष्पादित करते समय मेरे टर्मिनल का पूरा आउटपुट यहां दिया गया है:
postgres=# BEGIN; BEGIN postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# COMMIT; COMMIT
सभी तीन समय मान समान हैं, भले ही pg_sleep()
लेन-देन के भीतर प्रत्येक कथन के बीच निष्पादन में देरी के लिए फ़ंक्शन का उपयोग किया गया था।
यह statement_timestamp()
. के विपरीत है जो करता है प्रत्येक कथन के साथ बदलें।
एक स्टेटमेंट में कई कॉल
कथन के आगे बढ़ने पर यह भी नहीं बदलता है।
\x
SELECT
current_timestamp,
pg_sleep(5),
current_timestamp,
pg_sleep(5),
current_timestamp;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
current_timestamp | 2020-07-02 09:04:03.413062+10 pg_sleep | current_timestamp | 2020-07-02 09:04:03.413062+10 pg_sleep | current_timestamp | 2020-07-02 09:04:03.413062+10
सभी तीन समय मान समान हैं, भले ही pg_sleep()
फ़ंक्शन का उपयोग current_timestamp
. पर प्रत्येक कॉल के बीच निष्पादन में देरी करने के लिए किया गया था ।
यह clock_timestamp()
. के विपरीत है फ़ंक्शन, जो करता है कथन के माध्यम से आगे बढ़ने पर इसे बदलें।
वैसे, मैंने परिणामों को थोड़ा अधिक कॉम्पैक्ट बनाने के लिए लंबवत आउटपुट (विस्तारित आउटपुट के रूप में भी जाना जाता है) का उपयोग किया।
आप \x
. का उपयोग करके psql में विस्तारित आउटपुट को टॉगल कर सकते हैं ।