PostgreSQL में, statement_timestamp()
फ़ंक्शन वर्तमान विवरण की शुरुआत में वर्तमान दिनांक और समय (समय क्षेत्र ऑफ़सेट सहित) देता है।
फ़ंक्शन किसी भी पैरामीटर को स्वीकार नहीं करता है, इसलिए आप इसकी सटीकता निर्दिष्ट नहीं कर सकते।
साथ ही, statement_timestamp()
एक गैर-एसक्यूएल-मानक फ़ंक्शन है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
statement_timestamp()
किसी तर्क की आवश्यकता नहीं है या स्वीकार नहीं है।
मूल उदाहरण
प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।
SELECT statement_timestamp();
परिणाम:
2020-07-02 09:30:45.46903+10
लेन-देन के भीतर
लेन-देन में यह कैसे काम करता है, यह दिखाने के लिए यहां एक उदाहरण दिया गया है।
BEGIN;
SELECT statement_timestamp();
SELECT pg_sleep(5);
SELECT statement_timestamp();
SELECT pg_sleep(5);
SELECT statement_timestamp();
COMMIT;
यहाँ psql का उपयोग करते समय मेरे टर्मिनल के भीतर पूरा आउटपुट दिया गया है:
postgres=# BEGIN; BEGIN postgres=# SELECT statement_timestamp(); statement_timestamp ------------------------------- 2020-07-02 09:31:13.363128+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT statement_timestamp(); statement_timestamp ------------------------------- 2020-07-02 09:31:18.424503+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT statement_timestamp(); statement_timestamp ------------------------------- 2020-07-02 09:31:23.501539+10 (1 row) postgres=# COMMIT; COMMIT
इस उदाहरण में मैंने pg_sleep()
. का उपयोग किया है प्रत्येक कथन के बीच निष्पादन में देरी करने के लिए कार्य करता है।
क्योंकि प्रत्येक statement_timestamp()
कॉल अपने स्वयं के SQL कथन में था, लौटाया गया टाइमस्टैम्प प्रत्येक कॉल के साथ अलग था।
यह transaction_timestamp()
. के विपरीत है , जो नहीं प्रत्येक कथन के साथ बदलें। यह लेन-देन के प्रारंभ समय के आधार पर अपना टाइमस्टैम्प लौटाता है।
एक स्टेटमेंट में कई कॉल
यहां एक उदाहरण दिया गया है कि क्या होता है यदि हम तीनों फ़ंक्शन कॉल को एक एकल SQL कथन में संयोजित करते हैं।
\x
SELECT
statement_timestamp(),
pg_sleep(5),
statement_timestamp(),
pg_sleep(5),
statement_timestamp();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
statement_timestamp | 2020-07-02 09:34:41.06911+10 pg_sleep | statement_timestamp | 2020-07-02 09:34:41.06911+10 pg_sleep | statement_timestamp | 2020-07-02 09:34:41.06911+10
इस बार, सभी तीन टाइमस्टैम्प मान समान हैं, भले ही pg_sleep()
फ़ंक्शन का उपयोग प्रत्येक कॉल के बीच statement_timestamp()
. के निष्पादन में देरी करने के लिए किया गया था ।
यह clock_timestamp()
. के विपरीत है फ़ंक्शन, जो कथन के माध्यम से आगे बढ़ने पर भी बदलता है (यदि कथन के भीतर कई बार कहा जाता है)।