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

Oracle sql में दिनांक कार्यों के साथ कैसे काम करें?

<ब्लॉकक्वॉट क्लास ="डब्ल्यूपी-ब्लॉक-कोट">

इस पोस्ट में मैं ओरेकल में तारीख के बारे में कई चीजों की व्याख्या करने की कोशिश कर रहा हूं जैसे ओरेकल एसक्यूएल डेट फ़ंक्शंस, ओरेकल एसक्यूएल डेट फॉर्मेट, ऑरैकल एसक्यूएल डेट तुलना, ऑरैकल डेट डिफरेंस इन इयर्स, ऑरैकल डेट डिफरेंस इन डेज, ऑरेकल डेट डिफरेंस इन महीनों

Oracle ने oracle डेटाबेस में दिनांक और समय की जानकारी संग्रहीत करने के लिए दिनांक और टाइमस्टैम्प प्रकार प्रदान किए हैं।

दिनांक डेटा प्रकार

DATE वह ऑरैकल डेटाटाइप है जिससे हम सभी परिचित हैं जब हम दिनांक और समय मानों का प्रतिनिधित्व करने के बारे में सोचते हैं। इसमें महीने, दिन,
वर्ष, सदी, घंटे, मिनट और सेकंड को स्टोर करने की क्षमता है। DATE डेटाटाइप के साथ समस्या दो घटनाओं के बीच एक समय अंतराल निर्धारित करने का प्रयास करते समय इसकी 'विवरणता' है जब घटनाएं एक दूसरे के एक सेकंड के भीतर होती हैं। यह समस्या TIMESTAMP डेटाटाइप के साथ हल हो गई है

टाइमस्टैम्प

Oracle ने DATE डेटाटाइप पर विस्तार किया है और हमें TIMESTAMP डेटाटाइप दिया है जो DATE डेटाटाइप स्टोर करने वाली सभी सूचनाओं को संग्रहीत करता है, लेकिन इसमें आंशिक सेकंड भी शामिल हैं। यदि आप किसी DATE डेटाटाइप को TIMESTAMP डेटाटाइप प्रारूप में कनवर्ट करना चाहते हैं, तो आप CAST फ़ंक्शन का उपयोग कर सकते हैं

एसक्यूएल> सेलेक्ट कास्ट(last_login_date AS TIMESTAMP) "दिनांक" उपयोगकर्ताओं से; दिनांक ----------------------------- -----------------------20-अप्रैल-16 01.55.14.000000 PM21-JUN-16 14.16.36.000000 AM21-JUL-16 10.16.36.000000 AM21-SEP- 16 11.16.36.000000 AM21-DEC-16 11.16.36.000000 AM

सिस्टम दिनांक और समय को TIMESTAMP डेटाटाइप में वापस पाने के लिए, आप SYSTIMESTAMP फ़ंक्शन का उपयोग कर सकते हैं जैसे:

एसक्यूएल> ड्यूल से सिस्टमस्टैम्प का चयन करें; सिस्टमस्टैम्प -------------------------------------- ---------------------------------------- 01-सितंबर-19 01.02.17.158913 अपराह्न -04:00

कुछ महत्वपूर्ण बिंदु

1) DATE और TIMESTAMP दोनों प्रकारों में हमेशा एक दिनांक और समय घटक होता है। ठीक आधी रात को समय 00:00:00 है।

TO_CHAR(SYSDATE, 'MM/DD/YYYY HH:MI:SS AM') date_with_time, TRUNC(SYSDATE) आज चुनें, TO_CHAR(TRUNC(SYSDATE), 'MM/DD/YYYY HH:MI:SS AM' ) date_with_time_midnightFROM दोहरे 2 3 4;DATE_WITH_TIME TODAY DATE_WITH_TIME_MIDNIGHT----------------------------------------------- -------------10/27/2016 11:00 पूर्वाह्न 27-अक्टूबर-16 10/27/2016 12:00:00 पूर्वाह्न

2) स्ट्रिंग्स के तारीखों, या तारीखों से स्ट्रिंग्स के निहित रूपांतरणों पर कभी भी भरोसा न करें। हमेशा TO_CHAR, TO_DATE, और TO_TIMESTAMP फ़ंक्शन के साथ स्पष्ट रूप से रूपांतरण करें, या ANSI DATE या TIMESTAMP अक्षर का उपयोग करें।
3) दिनांक या टाइमस्टैम्प की तुलना करते समय, हमेशा समय घटक के प्रभाव पर विचार करें। यदि आप तुलना से समय घटक को छूट देना चाहते हैं, तो TRUNC . का उपयोग करें या राउंड तुलना के दोनों ओर से इसे हटाने का कार्य करता है।

fnd_table से * चुनें जहां trunc(creation_date)  

4) आप सत्र स्तर पर nls_date_format का उपयोग करके आवश्यक दिनांक प्रारूप प्रदर्शित कर सकते हैं

nls_date_format का उपयोग करके ऑरैकल में दिनांक स्वरूप बदलें

वैकल्पिक सत्र सेट NLS_DATE_FORMAT ='YYYY MM DD'; दोहरे से sysdate चुनें; वैकल्पिक सत्र सेट NLS_DATE_FORMAT ='HH24:MI:SS'; दोहरे से sysdate चुनें; सत्र सेट nls_date_format ='dd-mon-yyyy hh24:mi:ss'; दोहरे से sysdate चुनें;

5) यहां उन समय प्रारूपों का एक अच्छा सारांश दिया गया है जिनका हम उपयोग कर सकते हैं

<टीडी>वर्ष; S उपसर्ग BC दिनांक के साथ - आईएसओ मानक के आधार पर
तत्व विवरण
दिनांक प्रारूप तत्व
एससीसी या सीसी सेंचुरी; S उपसर्ग BC दिनांक के साथ -
YYYY या SYYYY
YYY या YY या Y वर्ष का अंतिम 3, 2, या 1 अंक
Y,YYY इस स्थिति में अल्पविराम के साथ वर्ष
IYYY, IYY, IY, I4, 3, 2, या 1  अंकीय वर्ष
SYEAR या YEAR वर्ष की वर्तनी; S उपसर्ग BC दिनांक के साथ -
BC या AD BC/AD संकेतक
ईसा पूर्व या ए.डी. अवधि के साथ BC/AC संकेतक
प्रश्न तिमाही
एमएम माह, दो अंकों का मान
महीना 9 वर्णों की लंबाई के रिक्त स्थान के साथ गद्देदार महीने का नाम
सोम महीने का नाम, तीन अक्षर का संक्षिप्त नाम
आरएम रोमन अंक माह
WW या W साल या महीने का सप्ताह
डीडीडी या डीडी या डी वर्ष, माह या सप्ताह का दिन
दिन दिन का नाम रिक्त स्थान के साथ 9 वर्णों की लंबाई के साथ गद्देदार
डीवाई दिन का नाम; 3 अक्षर का संक्षिप्त नाम
जम्मू जूलियन डे; 31 दिसंबर 4713 ईसा पूर्व से दिनों की संख्या
समय स्वरूप तत्व
AM या PM मेरिडियन संकेतक
पूर्वाह्न या अपराह्न पीरियड्स के साथ मेरिडियन इंडिकेटर
HH या HH12 या HH24 दिन का घंटा या घंटा(1-12) या घंटा(0-23)
एमआई मिनट (0-59)
एसएस दूसरा (0-59)
एसएसएसएसएस आधी रात के बाद के सेकंड (0-86399)
प्रत्यय
TH क्रमिक संख्या (अर्थात 5TH के लिए DDTH)
एसपी वर्तनी संख्या (अर्थात FIVE के लिए DDSP)
SPTH या THSP वर्तनी क्रमांक संख्याएं (अर्थात FIFTH के लिए DDSPTH)
अन्य स्वरूपण तत्व
/ , . विराम चिह्न को परिणाम में पुन:प्रस्तुत किया जाता है
“का” उद्धृत स्ट्रिंग परिणाम में पुन:प्रस्तुत की जाती है

ओरेकल दिनांक कार्य करता है

हमने पिछले भाग में दिनांक और टाइमस्टैम्प डेटा प्रकार के बारे में सीखा। अब हम महत्वपूर्ण ओरेकल तिथि कार्यों को विस्तार से देखेंगे और हम उनका उपयोग कैसे कर सकते हैं

ADD_MONTHS  

तिथि समारोह विवरण
ADD_MONTHS (दिनांक, n) दिनांक 'x' में 'n' महीने जोड़ने के बाद दिनांक मान लौटाता है।
ADD_MONTHS चुनें ('16-सितंबर-81', 3)      दोहरे से ----------------------------16-दिसंबर- 81

ADD_MONTHS हमेशा तारीख को पूरे महीने बदल देता है। आप Month_shift पैरामीटर के लिए भिन्नात्मक मान प्रदान कर सकते हैं, लेकिन ADD_MONTHS हमेशा शून्य के निकटतम पूर्ण संख्या में पूर्णांकित होगा, जैसा कि इन
उदाहरणों में दिखाया गया है:

तो

ADD_MONTHS ('28-FEB-2005', 1.5) चुनें              दोहरे से ----------------------------------- -----------31-मार्च-2005

हम नकारात्मक मानों का भी उपयोग कर सकते हैं

ADD_MONTHS ('28-FEB-2005', -1) चुनें                दोहरे से --------------------31 -जनवरी-2005

अंतिम_दिन

तिथि समारोह विवरण
LAST_DAY (x) इसका उपयोग निर्दिष्ट तिथि 'x' से एक महीने में शेष दिनों की संख्या निर्धारित करने के लिए किया जाता है।

LAST_DAY फ़ंक्शन किसी दी गई तारीख के लिए महीने के आखिरी दिन की तारीख लौटाता है। यह फ़ंक्शन उपयोगी है क्योंकि एक महीने में दिनों की संख्या पूरे वर्ष बदलती रहती है।

दोहरी से LAST_DAY ('01-जून-16')     चुनें-------------------------------------- -----------------------जून-2016

अगले_दिन

तिथि समारोह विवरण
NEXT_DAY (x, सप्ताह_दिन) 'सप्ताह_दिवस' की अगली तारीख 'x' आने की तारीख को या उसके बाद लौटाता है।

NEXT_DAY पहले कार्यदिवस की तारीख लौटाता है, जिसे उस दिन के अनुसार नामित किया जाता है, जो उस तारीख से बाद में होता है। तारीख के डेटाटाइप की परवाह किए बिना, रिटर्न प्रकार हमेशा DATE होता है। तर्क दिवस आपके सत्र की तिथि भाषा में सप्ताह का एक दिन होना चाहिए, या तो पूरा नाम या संक्षिप्त नाम

NEXT_DAY चुनें ('01-जून-08', 'बुधवार')       दोहरे से ---------------------------- -------------04-जून-08

MONTHS_BETWEEN 

तिथि समारोह विवरण
MONTHS_BETWEEN (X1, x2) दिनांक X1 और x2 के बीच महीनों की संख्या लौटाता है।
<ब्लॉकक्वॉट क्लास ="डब्ल्यूपी-ब्लॉक-कोट">

MONTHS_BETWEEN फ़ंक्शन दो तिथियों के बीच महीनों की संख्या की गणना करता है और उस अंतर को एक संख्या के रूप में लौटाता है

गणना के नियम हैं

1)यदि दिनांक 1, दिनांक 2 के बाद आता है, तो MONTHS_BETWEEN एक धनात्मक संख्या देता है।
2) यदि दिनांक 1, दिनांक 2 से पहले आता है, तो MONTHS_BETWEEN एक ऋणात्मक संख्या देता है।
3) यदि दिनांक 1 और दिनांक 2 दोनों अंतिम दिन आते हैं उनके संबंधित महीनों में, फिर MONTHS_BETWEEN एक पूर्ण संख्या (कोई भिन्नात्मक घटक नहीं) देता है।
4)यदि दिनांक1 और दिनांक2 अलग-अलग महीनों में हैं और इनमें से कम से कम एक तारीख महीने का अंतिम दिन नहीं है, तो MONTHS_BETWEEN एक देता है भिन्नात्मक संख्या। भिन्नात्मक घटक की गणना 31-दिन के आधार पर की जाती है और दिनांक1 और दिनांक2 के समय घटक में किसी भी अंतर पर भी विचार किया जाता है।

उदाहरण

दोहरी से MONTHS_BETWEEN ('29-FEB-2016', '31-MAR-20')   चुनें-------------------------- -------------------------------------------------- -----1दोहरी से  MONTHS_BETWEEN ('31-MAR-1995', '28-FEB-1994') चुनें-------------------------- -------------------------------------------------- -----13 दोहरे से  MONTHS_BETWEEN ('31-जनवरी-2006', '10-मार्च-2006') चुनें-------------------------- -------------------------------------------------- ---1.3225806 महीनों का चयन करें;महीने----------1.03225806

याद रखने के लिए एक महत्वपूर्ण बिंदु

MONTHS_BETWEEN यह मानकर कि
हर महीने में 31 दिन होते हैं, महीनों की संख्या के भिन्नात्मक घटक की गणना करता है। इसलिए, पूरे महीने में प्रत्येक अतिरिक्त दिन की गणना महीने के 1/31 के लिए की जाती है, और:
1 को 31 से विभाजित करके =.032258065

गोल 

तिथि समारोह विवरण
राउंड (x, date_format) दिनांक 'x' को पूर्णांकित करके निकटतम शताब्दी, वर्ष, माह, दिनांक, घंटा, मिनट, या दूसरा 'date_format' द्वारा निर्दिष्ट के रूप में लौटाता है।

ROUND फ़ंक्शन किसी दिनांक मान को प्रारूप मास्क द्वारा निर्दिष्ट निकटतम दिनांक तक पूर्णांकित करता है। यह मानक संख्यात्मक ROUND फ़ंक्शन की तरह है, जो किसी संख्या को निर्दिष्ट सटीकता की निकटतम संख्या तक गोल करता है, सिवाय इसके कि यह तिथियों के साथ काम करता है

उदाहरण

दोहरी से राउंड (TO_DATE ('12-MAR-2016'), 'MONTH') चुनें;01-MAR-2016 दोहरे से राउंड (TO_DATE ('17-MAR-2016'), 'MONTH') चुनें;01 -APR-2016 दोहरे से राउंड (TO_DATE ('01-MAR-2007'), 'YYYY') का चयन करें;01-जनवरी-2007 दोहरे से राउंड (TO_DATE ('01-SEP-2007'), 'YEAR') चुनें;01 -जनवरी-2008

ट्रंक

तिथि समारोह विवरण
TRUNC (x, date_format) दिनांक 'x' को 'date_format' द्वारा निर्दिष्ट निकटतम शताब्दी, वर्ष, माह, दिनांक, घंटा, मिनट या सेकंड से कम या उसके बराबर देता है।

उदाहरण

दोहरी से TRUNC (TO_DATE ('12-MAR-2016'), 'MONTH') चुनें;01-MAR-2016 दोहरी से TRUNC (TO_DATE ('17-MAR-2016'), 'MONTH') चुनें; 01-MAR-2016 दोहरी से TRUNC (TO_DATE ('01-MAR-2007'), 'YYYY') का चयन करें;01-जनवरी-2007 दोहरे से TRUNC (TO_DATE ('01-SEP-2007'), 'YEAR') चुनें;01-जनवरी-2007

Oracle date के साथ अंकगणित

हम ऑरैकल डेट डेटाटाइप पर बहुत सारे अंकगणितीय संचालन कर सकते हैं। हम परिणामी दिनांक मान के लिए किसी तिथि में या उसमें से किसी संख्या को जोड़ या घटा सकते हैं। हम उन तिथियों के बीच दिनों की संख्या ज्ञात करने के लिए दो तिथियों को घटा सकते हैं। हम घंटों की संख्या को 24 से भाग देकर तिथि में घंटे जोड़ते हैं।

जोड़ और घटाव के उदाहरण

SQL> sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 डुअल से चुनें;SYSDATE              SYSDATE+1/24         SYSDATE+1/1440       SYSDATE+1/86400------ --------------------------------------------------------- ---- ------------------------ 01-जुलाई-2016 06:32:12 01-जुलाई-2016 07:32:12 01-जुलाई-2016 06 :33:12 01-जुलाई-2016 06:32:13

अन्य तरीकों से हम इसका उपयोग कर सकते हैं

विवरण दिनांक अभिव्यक्ति
अब सिसडेट
कल/अगले दिन सिसडेट +1
सात दिन पहले SYSDATE -7
अब से एक घंटा SYSDATE + 1/24
अब से तीन घंटे बाद SYSDATE + 3/24  या SYSDATE + 1/8
अब से आधे घंटे बाद SYSDATE + 1/48
अब से 10 मिनट बाद SYSDATE + 10/1440
अब से 30 सेकंड बाद SYSDATE + 30/86400

उनके बीच दिनों की संख्या को खोजने के लिए  तारीख अंतर पर अंकगणितीय संचालन

तारीखों के बीच दिनों का अंतर जानने के लिए हम दो तारीखों को घटा सकते हैं

यदि समय भाग समान है, तो यह हमेशा पूर्णांक होगा चयन TO_DATE('25-MAR-2016 11:00:00 AM', 'DD-MON-YYYY HH:MI:SS AM')- TO_DATE(' 19-MAR-2016 11:00:00 AM', 'DD-MON-YYYY HH:MI:SS AM') diff_in_daysFROM   Dual;DIFF_IN_DAYS----------6यदि समय भाग समान नहीं है, तो इसमें हमेशा भिन्नात्मक घटक होंगे चयन करें TO_DATE('25-MAR-2016 10:00:00 AM', 'YYYYMMDD HH:MI:SS AM')- TO_DATE('19-MAR-2016 11:00:00 AM', 'YYYYMMDD HH:MI:SS AM') diff_in_daysFROM     Dual;DIFF_IN_DAYS----------5.95833333SQL> सेलेक्ट  TO_DATE('25-MAR-2016 11:00:00 AM', 'YYYYMMDD HH:MI:SS AM')- TO_DATE('19-MAR-2016 10:00:00 AM', 'YYYYMMDD HH:MI:SS AM') diff_in_daysFROM   Dual;DIFF_IN_DAYS----------6.04166666

हम क्वेरी का उपयोग करके  महीनों में oracle दिनांक अंतर का पता लगा सकते हैं

चुनें MONTHS_BETWEEN(TO_DATE('02-02-1995','MM-DD-YYYY'),TO_DATE('01-01-1995','MM-DD-YYYY') ) "Diff_in_Months", (TO_DATE ('02-02-1995', 'MM-DD-YYYY')-TO_DATE('01-01-1995','MM-DD-YYYY')  diff_in_daysFROM DUAL;Diff_in_Months    diff_in_days --------- -----------------------------1.03225806                32

हम क्वेरी का उपयोग करके  वर्षों में oracle दिनांक अंतर भी ढूंढ सकते हैं

चुनें (TO_DATE('20130525', 'YYYYMMDD') - TO_DATE('20100101', 'YYYYMMDD')) diff_in_days , MONTHS_BETWEEN(TO_DATE('20130525', 'YYYYMMDD'), TO_DATE('20100YMMDD', 'YYYYMMDD') ')) Diff_in_months, TRUNC (MONTHS_BETWEEN (TO_DATE ('20130525', 'YYYYMMDD'), TO_DATE ('20100101’, 'YYYYMMDD'))) Diff_in_months_no_fraction, TRUNC (TRUNC(MONTHS_BETWEEN('YYYDD') , TO_DATE('20100101', 'YYYYMMDD'))) / 12) Diff_in_years_no_fraction,MOD(TRUNC(MONTHS_BETWEEN(TO_DATE('20130525', 'YYYYMMDD'), TO_DATE('20100101', 'YYYYMMDD')), 12) Diff_in_years_fraction_in_monthsfrom dual; diff_in_days diff_in_months diff_in_months_no_fraction diff_in_year_no_fraction diff_in_years_yraction_fraction_months________________________________________________________________________________________________________________________________________________________________________________________________1240.740 


आशा है कि आपको ऑरैकल डेट डेटाटाइप पर पोस्ट पसंद आई होगी। मैंने विभिन्न चीजों को समझाने की कोशिश की है जैसे कि ऑरैकल डेट फंक्शन्स, ऑरेकल एसक्यूएल डेट फॉर्मेट, ऑरेकल एसक्यूएल डेट तुलना, ऑरैकल डेट डिफरेंस इन ईयर्स, ऑरेकल डेट डिफरेंस इन डेज, ऑरैकल डेट डिफरेंस इन महीनों में। यह एक संपूर्ण मार्गदर्शिका नहीं है, लेकिन मैंने oracle sql डेवलपर के लिए बहुत सारी उपयोगी जानकारी प्रस्तुत करने का प्रयास किया है

संबंधित लेख

sql क्वेरी कैसे लिखें
Oracle sql ट्यूटोरियल :बेसिक Sql स्टेटमेंट
Oracle sql ट्यूटोरियल:डेटा सेट को प्रतिबंधित करना
sql में सिंगल रो फंक्शन
Oracle sql डिकोड प्रोसेसिंग
डाउनलोड Oracle SQL डेवलपर
https://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_commands_1029.htm#OLADM780


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वैरिएबल कैसे घोषित करें और उसी Oracle SQL स्क्रिप्ट में इसका उपयोग कैसे करें?

  2. Oracle SQL डेवलपर में टेबल कैसे बनाएं?

  3. Oracle क्यों प्रदर्शित करता है ??? äö . जैसे विशेष पात्रों के लिए

  4. SQL डेवलपर प्रारंभ नहीं होगा

  5. एरलांग और इसकी हीप मेमोरी की खपत