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