इसे आजमाएं:
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));