मुख्य सामग्री पर जाएँ

DATEDIFF() SQL फ़ंक्शन

DATEDIFF() SQL में तारीख़ डेटा मैनिपुलेशन के लिए सबसे ज़्यादा उपयोग होने वाले फ़ंक्शनों में से एक है। इसे सीखने के लिए यह ट्यूटोरियल पढ़ें।
· 3 मि॰ पढ़ें

AI के साथ खोजें

DATEDIFF() SQL में तारीख़ और समय से संबंधित मैनिपुलेशन के लिए सबसे ज़्यादा उपयोग होने वाले फ़ंक्शनों में से एक है। यह ट्यूटोरियल इसके उपयोग, सिंटैक्स, और प्रमुख SQL डायलैक्ट्स में अंतरों के बारे में बताएगा ताकि आप इस शक्तिशाली फ़ंक्शन में महारत हासिल कर सकें।

DATEDIFF() फ़ंक्शन क्या है?

DATEDIFF() फ़ंक्शन दो तारीख़ या टाइमस्टैम्प मानों के बीच का अंतर निकालता है और परिणाम को निर्दिष्ट इकाई, जैसे दिन, महीने, या वर्ष में लौटाता है।

SQL डायलैक्ट्स में DATEDIFF का सिंटैक्स

DATEDIFF() का सिंटैक्स अलग-अलग SQL डायलैक्ट्स में भिन्न होता है। नीचे सामान्यतः उपयोग होने वाले डेटाबेस के उदाहरण दिए गए हैं:

 

यहाँ अनुरोधित सभी सुधारों और परिष्करणों के साथ पूरा अद्यतन लेख प्रस्तुत है:


DATEDIFF() SQL फ़ंक्शन

DATEDIFF() SQL में तारीख़ और समय से संबंधित मैनिपुलेशन के लिए सबसे ज़्यादा उपयोग होने वाले फ़ंक्शनों में से एक है। यह ट्यूटोरियल इसके उपयोग, सिंटैक्स, और प्रमुख SQL डायलैक्ट्स में अंतरों के बारे में बताएगा ताकि आप इस शक्तिशाली फ़ंक्शन में महारत हासिल कर सकें।


What is the DATEDIFF() Function?

The DATEDIFF() function calculates the difference between two date or timestamp values and returns the result in a specified unit, such as days, months, or years.


DATEDIFF Syntax Across SQL Dialects

The syntax for DATEDIFF() varies across SQL dialects. Below are examples for commonly used databases:

SQL Server

DATEDIFF(datepart, startdate, enddate)
  • datepart: The unit of time (e.g., year, month, day).
  • startdate and enddate: The dates or timestamps to compare. The result is calculated as enddate - startdate.

MySQL

DATEDIFF(enddate, startdate)
  • Returns the difference in days only.

PostgreSQL

PostgreSQL does not have a DATEDIFF() function but provides similar functionality through:

  • The AGE() function:
SELECT AGE(enddate, startdate);
  • Direct subtraction of date values:
SELECT enddate - startdate;

Parameter

What is it?

datepart

A required parameter. This is the unit in which DATEDIFF() reports the difference between the startdate and enddate. See the following section for the different type of values it can hold. 

startdate

A required signifying a datetime value that denotes the start date. 

enddate

A required signifying a datetime value that denotes the end date. 

datepart सिंटैक्स 

datepart पैरामीटर उस समय-इकाई को परिभाषित करता है जिसमें अंतर निकाला जाएगा। SQL Server निम्नलिखित datepart मानों का समर्थन करता है:

Datepartउपनाम (Aliases)
yearyy, yyyy
quarterqq, q
monthmm, m
daydd, d
hourhh
minutemi, n
secondss, s
millisecondms

नोट: MySQL में DATEDIFF() के लिए समय-इकाई के रूप में केवल day समर्थित है।

  • उद्धरण-चिह्न: तारीख़ और समय मानों के लिए हमेशा सिंगल कोट (') का उपयोग करें।
  • धनात्मक और ऋणात्मक परिणाम: SQL Server में, जब enddate > startdate हो तो परिणाम धनात्मक होता है, अन्यथा ऋणात्मक।
  • त्रुटि प्रबंधन: यदि परिणाम ±2,147,483,647 से अधिक हो जाए, तो SQL Server में DATEDIFF_BIG() का उपयोग करें।

DATEDIFF() के उदाहरण

DATEDIFF() के साथ काम करते समय, परिणाम धनात्मक या ऋणात्मक हो सकते हैं। यदि enddate startdate से बाद की है, तो DATEDIFF() धनात्मक मान लौटाता है। यदि enddate पहले की है, तो DATEDIFF() ऋणात्मक मान लौटाता है। 

उदाहरण 1: दो तारीख़ों के बीच का अंतर निकालें

SQL Server में:

SELECT DATEDIFF(year, '2022-12-31', '2024-06-01') AS years_difference;

व्याख्या: यह दोनों तारीख़ों के बीच वर्षों का अंतर निकालता है। चूंकि 2023 और 2024 का एक हिस्सा गिना जाता है, परिणाम 1 है।

MySQL में: 

SELECT DATEDIFF('2024-06-01', '2022-12-31') AS days_difference;

व्याख्या: MySQL केवल दिनों में अंतर सपोर्ट करता है। परिणाम 518 है।

उदाहरण 2: दो टाइमस्टैम्प के बीच का अंतर निकालें

SELECT 
    DATEDIFF(hour, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS hours_difference,
    DATEDIFF(minute, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS minutes_difference,
    DATEDIFF(second, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS seconds_difference;

व्याख्या:

  • hours_difference 23 लौटाता है क्योंकि दोनों टाइमस्टैम्प के बीच 23 घंटे का अंतर है।
  • minutes_difference 1439 लौटाता है, जो 23 hours * 60 minutes है।
  • seconds_difference 86,399 लौटाता है, जो 1439 minutes * 60 seconds है।

उदाहरण 3: दो तारीख़ कॉलमों के बीच का अंतर निकालें

मान लीजिए आपके पास orders नामक तालिका है जिसमें order_date और shipped_date कॉलम हैं। प्रत्येक ऑर्डर का शिपिंग समय निकालने के लिए DATEDIFF() का उपयोग करें।

SELECT 
    order_id,
    DATEDIFF(day, order_date, shipped_date) AS shipping_days 
FROM sales.orders;

व्याख्या: यह क्वेरी प्रत्येक ऑर्डर को शिप होने में लगे दिनों की संख्या निकालती है।

उदाहरण 4. आज की तारीख़ और किसी कॉलम के बीच अंतर निकालें

उदाहरण 3 की तरह ही sales.orders तालिका का उपयोग करते हुए, हम DATEDIFF() से आज की तारीख़ और ऑर्डर किए जाने की तारीख़ के बीच का अंतर निकाल सकते हैं।

SELECT 
    order_id,
    order_date,
    GETDATE() AS today_date,
    DATEDIFF(day, order_date, GETDATE()) AS days_from_order;

व्याख्या:

  • GETDATE() SQL Server में वर्तमान तारीख़ और समय देता है।
  • order_date से आज तक के दिनों का अंतर निकाला जाता है।

अतिरिक्त नोट्स

यदि DATEDIFF() का परिणाम सीमा से बाहर हो (अर्थात् मान +2,147,483,647 से बड़ा या -2,147,483,647 से छोटा), तो यह त्रुटि लौटाता है। ऐसे में DATEDIFF_BIG() उपयुक्त है। 

सामान्य त्रुटियाँ और समाधान

DATEDIFF() के साथ काम करते समय सिंटैक्स, आर्ग्युमेंट के क्रम, या डेटाबेस-विशिष्ट व्यवहार से जुड़ी दिक्कतें आ सकती हैं। नीचे सामान्य त्रुटियाँ और उनके समाधान दिए गए हैं:

1. गलत उद्धरण-चिह्न

समस्या: datepart के चारों ओर कोट लगाना या तारीख़ लिटरल के लिए असंगत उद्धरण-शैली का प्रयोग।

समाधान: datepart को हमेशा बिना कोट के रखें और तारीख़ों के लिए सिंगल कोट का उपयोग करें।

-- Incorrect
SELECT DATEDIFF('year', '2023-01-01', '2024-01-01');

-- Correct
SELECT DATEDIFF(year, '2023-01-01', '2024-01-01');
 

2. MySQL में असमर्थित datepart

समस्या: MySQL का DATEDIFF() केवल दिनों का अंतर सपोर्ट करता है।

समाधान: वर्षों या महीनों जैसी सूक्ष्म इकाइयों के लिए TIMESTAMPDIFF() का उपयोग करें।

-- Correct (MySQL)
SELECT TIMESTAMPDIFF(YEAR, '2023-01-01', '2024-01-01') AS years_difference; -- Returns 1

3. आर्ग्युमेंट का क्रम महत्वपूर्ण है

समस्या: startdate और enddate उलट देने से अनपेक्षित ऋणात्मक परिणाम मिल सकते हैं।

समाधान: सुनिश्चित करें कि startdate पहले आए। यदि केवल परिमाण चाहिए तो ABS() का उपयोग करें।

-- Incorrect
SELECT DATEDIFF(day, '2023-01-05', '2023-01-01'); -- Returns -4

-- Correct
SELECT DATEDIFF(day, '2023-01-01', '2023-01-05'); -- Returns 4

4. लोकेल-विशिष्ट तारीख़ प्रारूप

समस्या: संदिग्ध तारीख़ प्रारूप (जैसे MM/DD/YYYY बनाम DD/MM/YYYY) त्रुटियाँ पैदा कर सकते हैं।

समाधान: अस्पष्टता से बचने के लिए ISO 8601 मानक (YYYY-MM-DD) का उपयोग करें।

-- Correct
SELECT DATEDIFF(day, '2023-01-01', '2023-12-31'); -- Returns 364

5. सीमा से बाहर मान (SQL Server)

समस्या: ±2,147,483,647 से अधिक बड़े अंतर ओवरफ़्लो त्रुटि पैदा करते हैं।समाधान: बड़े रेंज के लिए DATEDIFF_BIG() का उपयोग करें।

-- Correct
SELECT DATEDIFF_BIG(day, '0001-01-01', '9999-12-31'); -- Returns 2,920,862,800

तकनीकी आवश्यकताएँ

SQL Server (2008 से), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse में काम करता है

यह भी देखें

SQL के बारे में और जानें

Travis Tang

लेखक

Travis Tang

Tiktok में डेटा साइंटिस्ट और GeorgiaTech में मास्टर'स के छात्र के रूप में, मुझे डेटा साइंस के प्रति स्वाभाविक लगाव है। मैंने तकनीक, जोखिम और सतत आत्म-विकास को जोड़ते हुए एक अनोखा करियर मार्ग बनाया है। Merchant Platform में डेटा साइंटिस्ट के रूप में अपनी भूमिका के दौरान, मैंने जटिल डेटा मॉडलों का उपयोग करके जोखिम कम किए और धोखाधड़ी का मुकाबला किया, जिससे हर सप्ताह हजारों डॉलर की बचत हुई। स्व-अध्ययन में अनगिनत घंटे समर्पित कर, मैंने प्रतिष्ठित संस्थानों से प्रमाणपत्र प्राप्त किए और डीप लर्निंग, TensorFlow और सोशल नेटवर्क विश्लेषण जैसे विषयों में दक्षता हासिल की। DataCamp और अन्य शैक्षणिक प्लेटफ़ॉर्म पर, मैं इसी ज्ञान का उपयोग दूसरों को प्रेरित और शिक्षित करने में करता/करती हूं, डेटा साइंस के क्षेत्र में नए रास्ते बनाता/बनाती हूं और यह साबित करता/करती हूं कि दृढ़ संकल्प और सही डेटा के साथ, किसी भी जोखिम को अवसर में बदला जा सकता है।

विषय