इस लेख में, हम पोस्टग्रेज तिथियों, विभिन्न तिथि डेटा प्रकारों, उपयोगों और कार्यों का पता लगाएंगे।
दिनांक और टाइमस्टैम्प डेटा विश्लेषण के लिए सहायक होते हैं और यह जाँचने के लिए डेटा संग्रहीत करते हैं कि वास्तव में कोई घटना कब हुई थी। उदाहरण के लिए, जब आपके पास खरीद और बिक्री के आदेश हों, मासिक या त्रैमासिक आय और बहुत कुछ। दिनांक प्रारूप अलग-अलग देशों में भिन्न होते हैं, इसलिए यह उन लोगों के लिए एक जटिल कार्य हो सकता है जो डेटाबेस प्रबंधन में नए हैं और दिनांक कॉलम के साथ काम कर रहे हैं। दिनांक कॉलम का प्रारूप या डेटा प्रकार हमेशा उपयोगकर्ता के इनपुट से मेल खाना चाहिए। इसके अतिरिक्त, आपको अपने उपयोगकर्ता की आवश्यकताओं के अनुसार दिनांक प्रारूप प्रदर्शन को रूपांतरित करना चाहिए।
Postgres में विभिन्न प्रकार के समर्थित डेटा प्रकार हैं। आगे बढ़ने से पहले, मेरा सुझाव है कि आप इन्हें और विस्तार से समझने के लिए विभिन्न पोस्टग्रेज डेटा प्रकारों को एक्सप्लोर करना देखें।
DATE डेटा प्रकार पोस्ट करता है
Postgres YYYY-MM-DD प्रारूप में विभिन्न तिथियों को संग्रहीत करने के लिए DATE डेटा प्रकार का उपयोग करता है। यह एक कॉलम में दिनांक मान संग्रहीत करने के लिए 4 बाइट्स का उपयोग करता है।
- निम्नतम तिथि:4713 ईसा पूर्व
- उच्चतम तिथि:5874897 ईसा पूर्व
- दिनांक प्रारूप:YYYY-MM-DD (उदा. 2021-01-01)
आप DATE कॉलम के साथ एक पोस्टग्रेज़ तालिका डिज़ाइन कर सकते हैं और कीवर्ड DEFAULT का उपयोग कर सकते हैं CURRENT_DATE इस कॉलम में वर्तमान सिस्टम तिथि को डिफ़ॉल्ट मान के रूप में उपयोग करने के लिए।
CREATE TABLE SalesOrders ( Order_id serial PRIMARY KEY, Orderdetails VARCHAR (255) NOT NULL, OrderDate DATE NOT NULL DEFAULT CURRENT_DATE ); INSERT INTO SalesOrders (Orderdetails) VALUES('Sample Order for customer ABC'); SELECT * FROM SalesOrders;
जैसा कि नीचे दिखाया गया है, SQL YYYY-MM-DD प्रारूप में वर्तमान सिस्टम तिथि के साथ स्वचालित रूप से [ऑर्डरडेट] कॉलम के लिए एक मान सम्मिलित करता है।
दिनांक कार्यों को पोस्टग्रेज करता है
हमें अक्सर दिनांक प्रारूप को संशोधित करने या पोस्टग्रेज़ तालिका में संग्रहीत मौजूदा मानों पर गणना करने की आवश्यकता होती है। उदाहरण के लिए, भारत में, सामान्य तिथि प्रारूप DD-MM-YYYY है। इसलिए, जब कोई भारतीय उपयोगकर्ता डेटा देखता है, तो हम चाहते हैं कि वह डेटा को उस प्रारूप में देखे जिससे वह सबसे अधिक परिचित है। इस मामले में, SQL फ़ंक्शन एक महत्वपूर्ण भूमिका निभाता है।
TO_CHAR() फ़ंक्शन
यह फ़ंक्शन एक निर्दिष्ट प्रारूप में पोस्टग्रेज़ दिनांक मान का आउटपुट देने में सहायक होता है। यह निम्नलिखित दो मापदंडों को स्वीकार करता है।
- इनपुट तिथि:यह वह तिथि है जिसे आप एक विशिष्ट प्रारूप में बदलना चाहते हैं।
- दिनांक प्रारूप:यह वह जगह है जहां आप नया दिनांक प्रारूप निर्दिष्ट करते हैं।
निम्न क्वेरी [SalesOrders] तालिका में संग्रहीत मौजूदा दिनांक मानों को DD-MM-YYYY प्रारूप में कनवर्ट करती है।
SELECT Orderdetails,OrderDate as ExistingDateformat, to_char(OrderDate,'DD-MM-YYYY') As NewDateFormat FROM SalesOrders;
to_char() फ़ंक्शन में समर्थित मान नीचे दिखाए गए हैं।
YYYY | वर्ष चार अंकों में |
YYY | एक वर्ष के अंतिम तीन अंक |
YY | साल के आखिरी दो अंक |
MONTH | महीने का नाम बड़े अक्षरों में |
माह | महीने का नाम जिसमें पहले अक्षर बड़े अक्षरों में हों |
माह | माह का नाम छोटे अक्षरों में |
सोम/सोम/सोम | माह का संक्षिप्त नाम सभी बड़े अक्षरों में, पहला अक्षर बड़े अक्षरों में और सभी छोटे अक्षरों में, क्रमशः |
MM | माह संख्या (01-12) |
दिन/दिन/दिन | दिन का नाम सभी बड़े अक्षरों में, पहला अक्षर बड़े अक्षरों में और सभी छोटे अक्षरों में, क्रमशः |
डीडीडी | वर्ष का दिन (001 से 366) |
डीडी | महीने का दिन (01 से 31) |
डी | सप्ताह का दिन (रविवार (1) से शनिवार (7)) |
W | महीने का सप्ताह |
WW | वर्ष का सप्ताह |
विभिन्न दिनांक स्वरूपों के कुछ उदाहरण निम्नलिखित SQL में निर्दिष्ट हैं।
SELECT Orderdetails,OrderDate as ExistingDateformat, to_char(OrderDate,'DD-MM-YYYY') As DDMMYYYY, to_char(OrderDate,'DD-MM-YY') As DDMMYY, to_char(OrderDate,'DD.MM.YY') As "DD.MM.YY", to_char(OrderDate,'MM/DD/YYYY') As "MM/DD/YYYY", to_char(OrderDate,'DAY MM/DD/YYYY') As "MM/DD/YYYY", to_char(OrderDate,'DDD MM/DD/YYYY') As "DDD MM/DD/YYYY" FROM SalesOrders
अब () फ़ंक्शन
Now() फ़ंक्शन वर्तमान सिस्टम टाइमस्टैम्प (दिनांक और समय) देता है।
DATETIME मान को DATE मान में डालने के लिए आप डबल कोलन (::) निर्दिष्ट कर सकते हैं।
वर्तमान टाइमस्टैम्प को निर्दिष्ट प्रारूप में बदलने के लिए आप TO_CHAR() और Now() फ़ंक्शन को जोड़ सकते हैं।
SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');
माइनस और इंटरवल ऑपरेटर
आप दो तिथियों के बीच अंतर की गणना करने के लिए ऋण (-) ऑपरेटर का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दी गई क्वेरी SalesOrders तालिका से वर्तमान टाइमस्टैम्प और [आदेश दिनांक] के बीच का अंतराल लौटाती है।
SELECT Orderdate,now() as currentdate, now()-Orderdate as Interval FROM SalesOrders where order_id=2;
आप एक निर्दिष्ट अवधि के बाद तिथि वापस करने के लिए एक अंतराल भी निर्दिष्ट कर सकते हैं। उदाहरण के लिए, नीचे दी गई SQL क्वेरी निम्नलिखित मान देती है।
- भविष्य की तारीख के लिए, मौजूदा टाइमस्टैम्प से 2 घंटे का अंतराल मान निर्दिष्ट करें: अभी() + अंतराल '2 घंटा'
- भविष्य की तारीख के लिए, मौजूदा टाइमस्टैम्प से 1 दिन का अंतराल मान निर्दिष्ट करें: अभी() + अंतराल '1 दिन'
- पिछली तारीख के लिए, मौजूदा टाइमस्टैम्प से एक साल का अंतराल मान निर्दिष्ट करें: अब() – अंतराल '1 वर्ष'
- [आदेश दिनांक] कॉलम में संग्रहीत मान से एक वर्ष पहले की तारीख की गणना करें: आदेश दिनांक – अंतराल '1 वर्ष'
SELECT (NOW() + interval '2 hour') AS twohourslater, (NOW() + interval '1 day') AS Onedaylater, (NOW() - interval '1 year') AS OneYearBefore, (Orderdate- interval '1 year') as Orderdatedifference from salesorders;
AGE() फ़ंक्शन
AGE () फ़ंक्शन वर्षों, महीनों और दिनों में दिनांक अंतर लौटाता है। आप इस फ़ंक्शन का उपयोग किसी व्यक्ति की आयु की गणना करने के लिए कर सकते हैं।
यह फ़ंक्शन दो दिनांक पैरामीटर स्वीकार करता है और पहले दिनांक मान को दूसरे से घटाता है।
यदि आप उपरोक्त फ़ंक्शन स्क्रिप्ट में मानों को उलट देते हैं, तो यह मान को नकारात्मक में लौटाता है।
एक अन्य उदाहरण में, मान लीजिए कि किसी की जन्मतिथि 1990-07-01 है। इसलिए, किसी व्यक्ति की आयु की गणना निम्न प्रकार से की जा सकती है।
SELECT current_date, AGE(timestamp '1990-07-01') as EmpAge;
EXTRACT() फ़ंक्शन
Extract() फ़ंक्शन निर्दिष्ट दिनांक मान से दिन, सप्ताह, माह, वर्ष और तिमाही लौटाता है।
एक वर्ष निकालें
SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-06-28 10:30:15') as year;
एक माह निकालें
SELECT EXTRACT(Month FROM TIMESTAMP '2021-06-28 10:30:15') as Month;
एक चौथाई निकालें
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2021-06-28 10:30:15') as QUARTER;
सप्ताह का दिन निकालना
SELECT EXTRACT(DOW FROM TIMESTAMP '2021-06-28 10:30:15') as DOW ;
वर्ष का दिन निकालना
SELECT EXTRACT(DOY FROM TIMESTAMP '2021-06-28 10:30:15') as DOY ;
आप इंटरवल के साथ संयोजन में EXTRACT() फ़ंक्शन का भी उपयोग कर सकते हैं। उदाहरण के लिए, नीचे हम अंतराल को 7 साल 9 महीने 20 दिन 09 घंटे 12 मिनट और 13 सेकंड के रूप में निर्दिष्ट करते हैं। एक्सट्रेक्ट फ़ंक्शन अलग-अलग मान लौटाता है।
SELECT EXTRACT(YEAR FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ), EXTRACT(Month FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ), EXTRACT(Day FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ), EXTRACT(hour FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ), EXTRACT(Minute FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ); ;
समयक्षेत्र पर
कभी-कभी, आपको टाइमस्टैम्प को किसी भिन्न समय क्षेत्र में बदलने की आवश्यकता होती है। उदाहरण के लिए, आप दिनांक मानों को UTC (सार्वभौमिक समय समन्वयक) में संग्रहीत कर सकते हैं और आवश्यकतानुसार समय क्षेत्र को रूपांतरित कर सकते हैं।
SELECT * FROM pg_timezone_names;
वर्तमान समय क्षेत्र की जाँच करने के लिए, नीचे दिखाए अनुसार SHOW TIMEZONE का उपयोग करें।
आप pg_timezone_names से आवश्यक समय क्षेत्र मान चुन सकते हैं और निर्दिष्ट समय क्षेत्र के अनुसार आउटपुट प्राप्त करने के लिए AT TIME ZONE का उपयोग कर सकते हैं।
SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/Chicago';
इसी तरह, हम AT TIME ZONE का उपयोग करके अलग-अलग टाइम ज़ोन आउटपुट प्राप्त कर सकते हैं।
SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/New_York';
SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Asia/Qatar';
SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Europe/Istanbul';
सारांश
किसी रिलेशनल डेटाबेस की लगभग हर तालिका में दिनांक और टाइमस्टैम्प संग्रहीत करते समय पोस्टग्रेज़ दिनांक प्रकार आवश्यक और मूल्यवान होते हैं। आपको विभिन्न उद्देश्यों के लिए उनकी आवश्यकता होती है जैसे ऑर्डर इंसर्शन या टाइमस्टैम्प को अपडेट करते समय, खरीद और बिक्री ऑर्डर, इवेंट विवरण, ग्राहक और कर्मचारी जानकारी और बहुत कुछ। आप अपने डेटा के निष्कर्षण और विश्लेषण को आसान बनाने के लिए दिनांक प्रकार को आवश्यक समय क्षेत्र, प्रारूप और विशिष्ट जानकारी में बदलने के लिए कई पोस्टग्रेज़ फ़ंक्शंस का उपयोग कर सकते हैं।