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

PL/SQL में किसी भी देश का वर्तमान स्थानीय समय प्राप्त करें

आमतौर पर हम किसी भी देश का मौजूदा लोकल टाइम चेक करने के लिए गूगल करते थे। इस पोस्ट में मैं एक उदाहरण दे रहा हूं कि आप किसी भी देश का वर्तमान स्थानीय समय PL/SQL में कैसे प्राप्त कर सकते हैं। आप V$TIMEZONE_NAMES के माध्यम से देश के नामों की सूची प्राप्त कर सकते हैं ओरेकल में देखें। मैं देश के नाम प्राप्त करने के लिए इस शब्दकोश दृश्य का उपयोग कर रहा हूं और समय क्षेत्र मान प्राप्त करने के लिए TZ_OFFSET फ़ंक्शन का उपयोग कर रहा हूं विशेष देश के लिए।

देश का नाम और समय क्षेत्र मान प्राप्त करने के बाद, आप वर्तमान सत्र का समय क्षेत्र निर्धारित करने के लिए सत्र बदलें कमांड का उपयोग कर सकते हैं। उसके बाद आप उस देश का वर्तमान स्थानीय समय जानने के लिए Current_Timestamp प्राप्त कर सकते हैं . नीचे मैं स्टेप बाय स्टेप उदाहरण दे रहा हूं।

देश के नाम और उनके समय क्षेत्र की जांच करने के लिए पहले TZ_OFFSET फ़ंक्शन का उपयोग करके V$TIMEZONE_NAMES दृश्य को क्वेरी करें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

 SELECT DISTINCT tzname, TZ_OFFSET (tzname)
 FROM V$TIMEZONE_NAMES
ORDER BY tzname;

आपको लगभग 577 पंक्तियाँ कुछ इस तरह मिलेंगी:

America/Mexico_City -05:00 
America/Miquelon -02:00 
America/Moncton -03:00 
America/Monterrey -05:00 
America/Montevideo -03:00 
America/Montreal -04:00 
America/Montserrat -04:00 
America/Nassau -04:00 
America/New_York -04:00

अब यदि आप जानना चाहते हैं कि न्यूयॉर्क में वर्तमान स्थानीय समय क्या है। फिर आप न्यू यॉर्क के टाइमज़ोन मान के साथ निम्नलिखित ऑल्टर सेशन कमांड चलाते हैं, जो -04:00 है। जैसा कि नीचे दिखाया गया है:

ALTER SESSION SET time_zone = '-04:00';

फिर न्यूयॉर्क के लिए वर्तमान स्थानीय समय प्राप्त करने के लिए नीचे के रूप में क्वेरी करें।

SELECT TO_CHAR (CURRENT_TIMESTAMP, 'dd-mon-yyyy HH:mi:ss PM') c_time
 FROM DUAL;
C_TIME 
--------------------------------
13-jun-2017 04:26:10 AM 
1 row selected.

उसके बाद आपको टाइमज़ोन को लोकल पर सेट करना चाहिए। समयक्षेत्र को पुनर्स्थापित करने के लिए निम्न सत्र बदलें आदेश चलाएँ:

ALTER SESSION SET time_zone = LOCAL;

अब यदि आप ऊपर बताए अनुसार प्रश्न करेंगे तो आपको अपने देश का वर्तमान स्थानीय समय मिल जाएगा।

मैंने देश के नाम को पैरामीटर के रूप में पास करके किसी भी देश का स्थानीय समय प्राप्त करने के लिए पीएल/एसक्यूएल में एक संग्रहीत फ़ंक्शन भी बनाया है। लेकिन पैरामीटर देश का नाम V$TIMEZONE_NAMES दृश्य में देश के नामों की सूची से होना चाहिए। नीचे कार्य है:

CREATE OR REPLACE FUNCTION get_current_local_time (country_name IN VARCHAR2)
 RETURN VARCHAR2
IS
 CURSOR c_tz (p_country_name IN VARCHAR2)
 IS
 SELECT DISTINCT tzname, TZ_OFFSET (tzname) z_offset 
 FROM V$TIMEZONE_NAMES
 WHERE UPPER (tzname) = UPPER (p_country_name) AND ROWNUM = 1;

v_offset VARCHAR2 (100);
 vtime VARCHAR2 (100);
BEGIN
 FOR c IN c_tz (country_name)
 LOOP
 v_offset := c.z_offset;
 END LOOP;

EXECUTE IMMEDIATE 'Alter Session Set time_zone = '
 || CHR (39)
 || v_offset
 || CHR (39);

SELECT TO_CHAR (CURRENT_TIMESTAMP, 'dd-mon-yyyy HH:mi:ss PM')
 INTO vtime
 FROM DUAL;

/* restore local time for current session*/
 EXECUTE IMMEDIATE 'Alter Session Set time_zone = local';

RETURN (vtime);
EXCEPTION
 WHEN OTHERS
 THEN
 RETURN '';
END;
/

अब इसे नीचे दिखाए अनुसार उपयोग करें:

SELECT get_current_local_time ('America/New_York') FROM DUAL;
C_TIME 
--------------------------------------------------------
13-jun-2017 04:33:05 AM 
1 row selected.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्प्रिंग डेटा में इकाई के लिए स्कीमा का नाम जोड़ा जा रहा है?

  2. Oracle जॉइन करता है - पारंपरिक सिंटैक्स VS ANSI सिंटैक्स के बीच तुलना

  3. Oracle 18c नई सुविधा:विभाजन का ऑनलाइन संशोधन

  4. Oracle में REPLACE () फ़ंक्शन

  5. Oracle में LISTAGG अलग-अलग मान लौटाने के लिए