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

टी-एसक्यूएल के साथ दिन महीने और साल से एक तारीख बनाएं

इसे आजमाएं:

Declare @DayOfMonth TinyInt Set @DayOfMonth = 13
Declare @Month TinyInt Set @Month = 6
Declare @Year Integer Set @Year = 2006
-- ------------------------------------
Select DateAdd(day, @DayOfMonth - 1, 
          DateAdd(month, @Month - 1, 
              DateAdd(Year, @Year-1900, 0)))

यह भी काम करता है, कोई स्ट्रिंग रूपांतरण नहीं करने का लाभ जोड़ा है, इसलिए यह शुद्ध अंकगणितीय प्रसंस्करण (बहुत तेज़) है और यह किसी भी दिनांक प्रारूप पर निर्भर नहीं है यह इस तथ्य पर पूंजीकरण करता है कि डेटाटाइम और छोटे डेटाटाइम मानों के लिए SQL सर्वर का आंतरिक प्रतिनिधित्व एक दो भाग है मान जिसका पहला भाग 1 जनवरी 1900 से दिनों की संख्या का प्रतिनिधित्व करने वाला एक पूर्णांक है, और दूसरा भाग एक दशमलव अंश है जो एक दिन (समय के लिए) के भिन्नात्मक भाग का प्रतिनिधित्व करता है --- तो पूर्णांक मान 0 (शून्य) हमेशा 1 जनवरी 1900 की मध्यरात्रि में सीधे अनुवाद किया जाता है...

या, @brinary के सुझाव के लिए धन्यवाद,

Select DateAdd(yy, @Year-1900,  
       DateAdd(m,  @Month - 1, @DayOfMonth - 1)) 

अक्टूबर 2014 को संपादित। जैसा कि @cade Roux द्वारा नोट किया गया है, SQL 2012 में अब एक अंतर्निहित कार्य है:
DATEFROMPARTS(year, month, day)
वह वही काम करता है।

संपादित 3 अक्टूबर 2016, (इस पर ध्यान देने के लिए @bambams के लिए धन्यवाद, और इसे ठीक करने के लिए @brinary), अंतिम समाधान, @brinary द्वारा प्रस्तावित। लीप वर्ष के लिए काम नहीं करता है जब तक कि वर्ष जोड़ पहले नहीं किया जाता है

select dateadd(month, @Month - 1, 
     dateadd(year, @Year-1900, @DayOfMonth - 1)); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2017 चरण दर चरण स्थापना -2

  2. SQL सर्वर एजेंट जॉब्स (T-SQL) की सूची वापस करने के 3 तरीके

  3. एमएस एसक्यूएल सर्वर 2005 में खुले/सक्रिय कनेक्शन की कुल संख्या कैसे निर्धारित करें?

  4. उपलब्धता समूहों पर हमेशा SQL सर्वर की निगरानी करने के विभिन्न तरीके

  5. बराबर नहीं <> !=NULL पर ऑपरेटर