PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

हाउ नाउ () PostgreSQL में काम करता है

PostgreSQL में, now() फ़ंक्शन वर्तमान लेनदेन की शुरुआत में वर्तमान दिनांक और समय (समय क्षेत्र ऑफ़सेट सहित) देता है।

यह transaction_timestamp() . के बराबर है समारोह।

यह भी current_timestamp . के समान है फ़ंक्शन (जब बिना तर्क के कहा जाता है)।

now() फ़ंक्शन किसी भी पैरामीटर को स्वीकार नहीं करता है, इसलिए आप इसकी सटीकता निर्दिष्ट नहीं कर सकते, जबकि current_timestamp सटीक पैरामीटर के साथ या बिना कॉल किया जा सकता है।

साथ ही, now() गैर-एसक्यूएल-मानक है (जैसा कि transaction_timestamp() है समारोह)।

सिंटैक्स

वाक्य रचना इस प्रकार है:

now()

किसी तर्क की आवश्यकता नहीं है या स्वीकार नहीं है।

मूल उदाहरण

प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।

SELECT now();

परिणाम:

2020-07-02 09:51:12.088506+10

लेन-देन के भीतर

लेन-देन में यह कैसे काम करता है, यह दिखाने के लिए यहां एक उदाहरण दिया गया है।

BEGIN;
SELECT now();
SELECT pg_sleep(5);
SELECT now();
SELECT pg_sleep(5);
SELECT now();
COMMIT;

यहाँ psql का उपयोग करते समय मेरे टर्मिनल के भीतर पूरा आउटपुट दिया गया है:

postgres=# BEGIN;
BEGIN
postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


postgres=# SELECT pg_sleep(5);
 pg_sleep 
----------
 
(1 row)


postgres=# SELECT now();
              now              
-------------------------------
 2020-07-02 09:51:53.905091+10
(1 row)


postgres=# COMMIT;
COMMIT

सभी तीन समय मान समान हैं, भले ही pg_sleep() फ़ंक्शन का उपयोग प्रत्येक कॉल के बीच निष्पादन में देरी करने के लिए किया गया था now() , जिनमें से प्रत्येक अपने स्वयं के SQL कथन में हुआ।

इसलिए हम देख सकते हैं कि प्रत्येक कथन के लिए दिया गया समय वर्तमान लेनदेन के प्रारंभ समय पर आधारित है - विवरण पर नहीं। लेन-देन की प्रगति के रूप में यह नहीं बदलता है।

यह एकल लेन-देन को "वर्तमान" समय की एक सुसंगत धारणा रखने की अनुमति देता है, ताकि एक ही लेन-देन के भीतर कई संशोधनों में एक ही समय की मुहर लगे।

एक स्टेटमेंट में कई कॉल

कथन के आगे बढ़ने पर यह भी नहीं बदलता है।

\x
SELECT 
  now(),
  pg_sleep(5),
  now(),
  pg_sleep(5),
  now();

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

now      | 2020-07-02 09:53:33.766806+10
pg_sleep | 
now      | 2020-07-02 09:53:33.766806+10
pg_sleep | 
now      | 2020-07-02 09:53:33.766806+10

फिर से, सभी तीन समय मान समान हैं, भले ही pg_sleep() फ़ंक्शन का उपयोग प्रत्येक कॉल के बीच निष्पादन में देरी करने के लिए किया गया था now()

यह statement_timestamp() . के विपरीत है , जो करता है प्रत्येक कथन के साथ बदलें, और साथ ही clock_timestamp() फ़ंक्शन, जो प्रत्येक कथन के माध्यम से आगे बढ़ने पर भी बदलता है (यदि कथन के भीतर कई बार कहा जाता है)।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रूबी 'पीजी' मणि libpq.5.dylib (OSX पर) की गलत प्रति से जुड़ती है

  2. PostgreSQL में पिवट टेबल कैसे बनाएं

  3. जावा - तारीख पहले दिन के रूप में सहेजी गई

  4. एसक्यूएल कॉलम के रूप में पंक्तियों को स्थानांतरित करें

  5. त्रुटि प्राप्त करना:उपयोगकर्ता पोस्टग्रेज के लिए सहकर्मी प्रमाणीकरण विफल रहा, जब pgsql रेल के साथ काम करने की कोशिश कर रहा था