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

SQL सर्वर DATEPART () बनाम DATENAME () - क्या अंतर है?

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      |
+------------+------------+

प्लस चिह्न संख्यात्मक डेटा प्रकारों पर एक अंकगणितीय ऑपरेटर है, लेकिन यह स्ट्रिंग्स पर एक स्ट्रिंग कॉन्सटेनेशन ऑपरेटर है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक पंक्तियों में मानों को विभाजित करें

  2. Oracle को SKIP LOCKED के साथ TOP N पंक्तियों को वापस करने के लिए बाध्य करें

  3. वेतन तालिका से वां उच्चतम वेतन खोजने के लिए SQL क्वेरी

  4. टीएसक्यूएल:स्थानीय समय को यूटीसी में कैसे परिवर्तित करें? (एसक्यूएल सर्वर 2008)

  5. बाईं ओर एक निश्चित लंबाई तक एक वर्चर को पैड करने का सबसे कुशल टी-एसक्यूएल तरीका?