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

चालू वर्ष की पहली और आखिरी तारीख कैसे प्राप्त करें?

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

उपरोक्त क्वेरी 31 दिसंबर की शुरुआत में मध्यरात्रि के लिए डेटाटाइम मान देती है। यह वर्ष के आखिरी क्षण से लगभग 24 घंटे कम है। यदि आप 31 दिसंबर को होने वाले समय को शामिल करना चाहते हैं, तो आपको अगले वर्ष के पहले वर्ष की तुलना < से करनी चाहिए तुलना। या आप चालू वर्ष के अंतिम कुछ मिलीसेकंड से तुलना कर सकते हैं, लेकिन यदि आप DATETIME (जैसे DATETIME2) के अलावा किसी अन्य चीज़ का उपयोग कर रहे हैं, तो यह अभी भी एक अंतर छोड़ देता है:

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

अन्य अवधियां

इस दृष्टिकोण के दो अच्छे पहलू हैं:अच्छा प्रदर्शन और इसे yy की दोनों घटनाओं को बदलकर अन्य अवधियों के लिए आसानी से बदला जा सकता है (=वर्ष) एक अलग स्ट्रिंग के साथ:

yy, yyyy    year
qq, q       quarter
mm, m       month
wk, ww      week 

(हफ्तों से सावधान रहें:शुरुआती दिन सर्वर सेटिंग्स पर निर्भर करता है।)

तकनीकी विवरण

यह 1900 के बाद से DATEDIFF(yy, 0, GETDATE()) के साथ वर्षों की संख्या का पता लगाकर काम करता है। और फिर उसे शून्य की तारीख में जोड़कर =1 जनवरी, 1900। इसे GETDATE() के स्थान पर एक मनमानी तिथि के लिए कार्य में बदला जा सकता है। DATEDIFF(...) . को प्रतिस्थापित करके भाग या एक मनमाना वर्ष "वर्ष - 1900" के साथ कार्य करें।

 SELECT
   DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
   DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर मॉनिटरिंग के साथ अलर्ट ओवरलोड को रोकने में मदद करने के 4 तरीके

  2. SQL में एक शीर्ष स्तरीय अभिभावक ढूँढना

  3. चयन क्वेरी में सशर्त स्वरूपण के लिए केस स्टेटमेंट का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 116

  4. केस संवेदनशील होने के लिए मैं SQL Server 2005 को कैसे बदलूं?

  5. संदर्भित तालिका में कोई प्राथमिक या उम्मीदवार कुंजी नहीं है जो विदेशी कुंजी में संदर्भ कॉलम सूची से मेल खाती है