SQL सर्वर में तिथियों के साथ काम करते समय, कभी-कभी आप खुद को DATEPART()
. तक पहुंचते हुए पा सकते हैं फ़ंक्शन, केवल यह महसूस करने के लिए कि आपको वास्तव में क्या चाहिए DATENAME()
समारोह। फिर अन्य स्थितियां भी हो सकती हैं जहां DATEPART()
वास्तव में DATENAME()
. से बेहतर है ।
तो DATEPART()
. में क्या अंतर है? और DATENAME()
कार्य?
आइए जानें।
परिभाषाएं
इन दो कार्यों के बीच का अंतर उनकी परिभाषाओं में है:
DATEPART()
- एक पूर्णांक देता है जो निर्दिष्ट तारीख . का प्रतिनिधित्व करता है निर्दिष्ट तारीख . के ।
DATENAME()
- एक वर्ण स्ट्रिंग देता है जो निर्दिष्ट तारीख . का प्रतिनिधित्व करता है निर्दिष्ट तारीख . के
उनकी परिभाषा के अनुसार, इन दो कार्यों के बीच एकमात्र अंतर वापसी प्रकार है:
DATEPART()
एक पूर्णांक देता है।DATENAME()
एक स्ट्रिंग देता है।
तो यही फर्क है।
दोनों परिभाषाओं में, डेटपार्ट जो तारीख आप चाहते हैं उसका हिस्सा है (उदाहरण के लिए महीना), और तारीख वह तारीख है जिससे आप चाहते हैं कि डेटपार्ट वापस आ जाए।
महीने और दिन के नाम
सबसे स्पष्ट उदाहरण जहां DATENAME()
DATEPART()
. के लिए अधिक उपयुक्त है जब आप चाहते हैं कि दिन या महीने का नाम लौटाया जाए।
यहां एक उदाहरण दिया गया है।
DATENAME()
यहाँ क्या है DATENAME()
जब हम किसी तारीख से कार्यदिवस और महीने चाहते हैं तो वापस लौटता है:
SELECT DATENAME(weekday, '2000-01-01') AS 'DATENAME Weekday', DATENAME(month, '2000-01-01') AS 'DATENAME Month';
परिणाम:
+--------------------+------------------+ | DATENAME Weekday | DATENAME Month | |--------------------+------------------| | Saturday | January | +--------------------+------------------+
DATEPART()
यहाँ क्या है DATEPART()
रिटर्न:
SELECT DATEPART(weekday, '2000-01-01') AS 'DATEPART Weekday', DATEPART(month, '2000-01-01') AS 'DATEPART Month';
परिणाम:
+--------------------+------------------+ | DATEPART Weekday | DATEPART Month | |--------------------+------------------| | 7 | 1 | +--------------------+------------------+
जब परिणाम समान हों
ज्यादातर मामलों में, दोनों कार्यों के परिणाम समान दिखाई देंगे। ऐसा इसलिए है क्योंकि अधिकांश तिथि भाग अपने स्वभाव से संख्यात्मक होते हैं। उदाहरण के लिए:
SELECT DATEPART(year, '2000-01-01') AS DATEPART, DATENAME(year, '2000-01-01') AS DATENAME;
परिणाम:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2000 | 2000 | +------------+------------+
हालांकि, जैसा कि बताया गया है, एक पूर्णांक देता है और दूसरा एक स्ट्रिंग देता है।
इसका प्रमाण हम निम्नलिखित उदाहरण से देख सकते हैं:
SELECT DATEPART(year, '2000-01-01') + '1' AS DATEPART, DATENAME(year, '2000-01-01') + '1' AS DATENAME;
परिणाम:
+------------+------------+ | DATEPART | DATENAME | |------------+------------| | 2001 | 20001 | +------------+------------+
प्लस चिह्न संख्यात्मक डेटा प्रकारों पर एक अंकगणितीय ऑपरेटर है, लेकिन यह स्ट्रिंग्स पर एक स्ट्रिंग कॉन्सटेनेशन ऑपरेटर है।