PostgreSQL में, आप pg_sleep_until()
. का उपयोग कर सकते हैं निर्दिष्ट टाइमस्टैम्प तक निष्पादन में देरी करने के लिए कार्य करता है।
यह तब उपयोगी होता है जब एक विशिष्ट वेक-अप समय वांछित होता है।
ध्यान दें कि pg_sleep_until
निश्चित समय पर जागने की गारंटी नहीं है, लेकिन यह पहले नहीं जागेगा।
सिंटैक्स
वाक्य रचना इस प्रकार है:
pg_sleep_until(timestamp with time zone)
उदाहरण
इसके उपयोग को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
\x
SELECT
clock_timestamp(),
pg_sleep_until('today 15:30'),
clock_timestamp();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
clock_timestamp | 2020-06-28 15:29:54.564608+10 pg_sleep_until | clock_timestamp | 2020-06-28 15:30:00.0119+10
मैंने clock_timestamp()
का उपयोग किया है इस उदाहरण में, क्योंकि यह कथन निष्पादन के दौरान बदलता है। यह हमें स्टेटमेंट के आगे बढ़ने पर अपडेट किए गए मानों को देखने की अनुमति देता है।
मैंने इस उदाहरण में विस्तारित प्रदर्शन (कभी-कभी "ऊर्ध्वाधर आउटपुट" के रूप में संदर्भित) का उपयोग किया ताकि परिणाम देखना आसान हो सके।
आप \x
. का उपयोग करके psql में विस्तारित डिस्प्ले को टॉगल कर सकते हैं ।
उदाहरण 2
यहां एक और उदाहरण दिया गया है, इस बार pg_sleep_until()
पर एक अतिरिक्त कॉल के साथ और clock_timestamp()
।
SELECT
clock_timestamp(),
pg_sleep_until('today 15:32'),
clock_timestamp(),
pg_sleep_until('today 15:33'),
clock_timestamp();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
clock_timestamp | 2020-06-28 15:31:23.142358+10 pg_sleep_until | clock_timestamp | 2020-06-28 15:32:00.061566+10 pg_sleep_until | clock_timestamp | 2020-06-28 15:33:00.074381+10
उदाहरण 3
इस उदाहरण में, मैं स्पष्ट रूप से दिनांक/समय और समय क्षेत्र ऑफ़सेट निर्दिष्ट करता हूँ।
साथ ही, मैं पहली टाइमस्टैम्प पास होने के बाद क्वेरी चलाता हूं। इसलिए यह तुरंत चलता है।
SELECT
clock_timestamp(),
pg_sleep_until('2020-06-29 08:54:00.000000+10'),
clock_timestamp(),
pg_sleep_until('2020-06-29 08:55:00.000000+10'),
clock_timestamp();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
clock_timestamp | 2020-06-29 08:54:17.189189+10 pg_sleep_until | clock_timestamp | 2020-06-29 08:54:17.189196+10 pg_sleep_until | clock_timestamp | 2020-06-29 08:55:00.062783+10
जैसा कि परिणाम दिखाता है, मैंने पहले pg_sleep_until()
के 17 सेकंड बाद तक क्वेरी चलाना शुरू नहीं किया था मान, और इसलिए यह तुरंत चला और चलने के समय टाइमस्टैम्प का उपयोग किया।
इन उदाहरणों में मेरे टाइमस्टैम्प सभी त्वरित उत्तराधिकार में थे, क्योंकि मैं इस लेख को अपडेट करने के लिए घंटों या दिनों का इंतजार नहीं करना चाहता था। लेकिन यदि आवश्यक हो तो आप आगे बढ़ सकते हैं और एक अलग तिथि निर्दिष्ट कर सकते हैं।