datepart सिंटैक्स
datepart पैरामीटर उस समय-इकाई को परिभाषित करता है जिसमें अंतर निकाला जाएगा। SQL Server निम्नलिखित datepart मानों का समर्थन करता है:
| Datepart | उपनाम (Aliases) |
|---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
day | dd, d |
hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
नोट: 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_difference23लौटाता है क्योंकि दोनों टाइमस्टैम्प के बीच 23 घंटे का अंतर है।minutes_difference1439लौटाता है, जो23 hours * 60 minutesहै।seconds_difference86,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 के बारे में और जानें

Tiktok में डेटा साइंटिस्ट और GeorgiaTech में मास्टर'स के छात्र के रूप में, मुझे डेटा साइंस के प्रति स्वाभाविक लगाव है। मैंने तकनीक, जोखिम और सतत आत्म-विकास को जोड़ते हुए एक अनोखा करियर मार्ग बनाया है। Merchant Platform में डेटा साइंटिस्ट के रूप में अपनी भूमिका के दौरान, मैंने जटिल डेटा मॉडलों का उपयोग करके जोखिम कम किए और धोखाधड़ी का मुकाबला किया, जिससे हर सप्ताह हजारों डॉलर की बचत हुई। स्व-अध्ययन में अनगिनत घंटे समर्पित कर, मैंने प्रतिष्ठित संस्थानों से प्रमाणपत्र प्राप्त किए और डीप लर्निंग, TensorFlow और सोशल नेटवर्क विश्लेषण जैसे विषयों में दक्षता हासिल की। DataCamp और अन्य शैक्षणिक प्लेटफ़ॉर्म पर, मैं इसी ज्ञान का उपयोग दूसरों को प्रेरित और शिक्षित करने में करता/करती हूं, डेटा साइंस के क्षेत्र में नए रास्ते बनाता/बनाती हूं और यह साबित करता/करती हूं कि दृढ़ संकल्प और सही डेटा के साथ, किसी भी जोखिम को अवसर में बदला जा सकता है।
DATEDIFF()SQL में तारीख़ और समय से संबंधित मैनिपुलेशन के लिए सबसे ज़्यादा उपयोग होने वाले फ़ंक्शनों में से एक है। यह ट्यूटोरियल इसके उपयोग, सिंटैक्स, और प्रमुख SQL डायलैक्ट्स में अंतरों के बारे में बताएगा ताकि आप इस शक्तिशाली फ़ंक्शन में महारत हासिल कर सकें।DATEDIFF() फ़ंक्शन क्या है?
DATEDIFF()फ़ंक्शन दो तारीख़ या टाइमस्टैम्प मानों के बीच का अंतर निकालता है और परिणाम को निर्दिष्ट इकाई, जैसे दिन, महीने, या वर्ष में लौटाता है।SQL डायलैक्ट्स में DATEDIFF का सिंटैक्स
DATEDIFF()का सिंटैक्स अलग-अलग SQL डायलैक्ट्स में भिन्न होता है। नीचे सामान्यतः उपयोग होने वाले डेटाबेस के उदाहरण दिए गए हैं:Parameter
What is it?
datepartA required parameter. This is the unit in which
DATEDIFF()reports the difference between thestartdateandenddate. See the following section for the different type of values it can hold.startdateA required signifying a datetime value that denotes the start date.
enddateA required signifying a datetime value that denotes the end date.