-- Usage : EXEC Lunar2Solar '1974-05-29', 'n' -- ù¹øÂ° ÆÄ¶ó¹ÌÅÍ : »ý³â¿ùÀÏ -- µÎ¹øÂ° ÆÄ¶ó¹ÌÅÍ : À±´Þ(y), Æò´Þ(n) create proc Lunar2Solar @LunaDay varchar(12), @yun varchar(1) = 'n' as if (year(@LunaDay) < year('1901')) or (year(@LunaDay) > year('2043')) return declare @tYearDays int, @i int, @m_Str varchar(20) declare @int_year int, @int_month tinyint declare @LunarSet table (yyyy int, m1 char(1), m2 char(1), m3 char(1), m4 char(1), m5 char(1), m6 char(1), m7 char(1), m8 char(1), m9 char(1), m10 char(1), m11 char(1), m12 char(1), y_total int) insert into @LunarSet values(1901, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(1902, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355) insert into @LunarSet values(1903, 1, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 383) insert into @LunarSet values(1904, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 354) insert into @LunarSet values(1905, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1906, 1, 2, 2, 4, 1, 2, 1, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(1907, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1908, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(1909, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 384) insert into @LunarSet values(1910, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(1911, 2, 1, 2, 1, 1, 5, 1, 2, 2, 1, 2, 2, 384) insert into @LunarSet values(1912, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 354) insert into @LunarSet values(1913, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354) insert into @LunarSet values(1914, 2, 2, 1, 2, 5, 1, 2, 1, 2, 1, 1, 2, 384) insert into @LunarSet values(1915, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1916, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1917, 2, 3, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 384) insert into @LunarSet values(1918, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 355) insert into @LunarSet values(1919, 1, 2, 1, 1, 2, 1, 5, 2, 2, 1, 2, 2, 384) insert into @LunarSet values(1920, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354) insert into @LunarSet values(1921, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354) insert into @LunarSet values(1922, 2, 1, 2, 2, 3, 2, 1, 1, 2, 1, 2, 2, 384) insert into @LunarSet values(1923, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 354) insert into @LunarSet values(1924, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354) insert into @LunarSet values(1925, 2, 1, 2, 5, 2, 1, 2, 2, 1, 2, 1, 2, 385) insert into @LunarSet values(1926, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(1927, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355) insert into @LunarSet values(1928, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2, 384) insert into @LunarSet values(1929, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354) insert into @LunarSet values(1930, 1, 2, 2, 1, 1, 5, 1, 2, 1, 2, 2, 1, 383) insert into @LunarSet values(1931, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1932, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355) insert into @LunarSet values(1933, 1, 2, 2, 1, 6, 1, 2, 1, 2, 1, 1, 2, 384) insert into @LunarSet values(1934, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1935, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(1936, 2, 1, 4, 1, 2, 1, 2, 1, 2, 2, 2, 1, 384) insert into @LunarSet values(1937, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(1938, 2, 2, 1, 1, 2, 1, 4, 1, 2, 2, 1, 2, 384) insert into @LunarSet values(1939, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354) insert into @LunarSet values(1940, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1941, 2, 2, 1, 2, 2, 4, 1, 1, 2, 1, 2, 1, 384) insert into @LunarSet values(1942, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 355) insert into @LunarSet values(1943, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(1944, 1, 1, 2, 4, 1, 2, 1, 2, 2, 1, 2, 2, 384) insert into @LunarSet values(1945, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354) insert into @LunarSet values(1946, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354) insert into @LunarSet values(1947, 2, 5, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 384) insert into @LunarSet values(1948, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354) insert into @LunarSet values(1949, 2, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(1950, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1951, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1952, 1, 2, 1, 2, 4, 2, 1, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(1953, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 355) insert into @LunarSet values(1954, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 354) insert into @LunarSet values(1955, 2, 1, 4, 1, 1, 2, 1, 2, 1, 2, 2, 2, 384) insert into @LunarSet values(1956, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354) insert into @LunarSet values(1957, 2, 1, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 384) insert into @LunarSet values(1958, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354) insert into @LunarSet values(1959, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1960, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 384) insert into @LunarSet values(1961, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1962, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(1963, 2, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 1, 384) insert into @LunarSet values(1964, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355) insert into @LunarSet values(1965, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 353) insert into @LunarSet values(1966, 2, 2, 5, 2, 1, 1, 2, 1, 1, 2, 2, 1, 384) insert into @LunarSet values(1967, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(1968, 1, 2, 2, 1, 2, 1, 5, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(1969, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(1970, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(1971, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 2, 384) insert into @LunarSet values(1972, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(1973, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(1974, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 2, 384) insert into @LunarSet values(1975, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354) insert into @LunarSet values(1976, 2, 2, 1, 2, 1, 2, 1, 5, 2, 1, 1, 2, 384) insert into @LunarSet values(1977, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 354) insert into @LunarSet values(1978, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 355) insert into @LunarSet values(1979, 2, 1, 1, 2, 1, 6, 1, 2, 2, 1, 2, 1, 384) insert into @LunarSet values(1980, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355) insert into @LunarSet values(1981, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354) insert into @LunarSet values(1982, 2, 1, 2, 3, 2, 1, 1, 2, 2, 1, 2, 2, 384) insert into @LunarSet values(1983, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354) insert into @LunarSet values(1984, 2, 1, 2, 2, 1, 1, 2, 1, 1, 5, 2, 2, 384) insert into @LunarSet values(1985, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 354) insert into @LunarSet values(1986, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 354) insert into @LunarSet values(1987, 2, 1, 2, 2, 1, 5, 2, 2, 1, 2, 1, 2, 385) insert into @LunarSet values(1988, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(1989, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 355) insert into @LunarSet values(1990, 1, 2, 1, 1, 5, 1, 2, 1, 2, 2, 2, 2, 384) insert into @LunarSet values(1991, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 354) insert into @LunarSet values(1992, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 354) insert into @LunarSet values(1993, 1, 2, 5, 2, 1, 2, 1, 1, 2, 1, 2, 1, 383) insert into @LunarSet values(1994, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 355) insert into @LunarSet values(1995, 1, 2, 2, 1, 2, 2, 1, 5, 2, 1, 1, 2, 384) insert into @LunarSet values(1996, 1, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(1997, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(1998, 2, 1, 1, 2, 3, 2, 2, 1, 2, 2, 2, 1, 384) insert into @LunarSet values(1999, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(2000, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(2001, 2, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(2002, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(2003, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 355) insert into @LunarSet values(2004, 1, 5, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 384) insert into @LunarSet values(2005, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(2006, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 2, 2, 384) insert into @LunarSet values(2007, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 354) insert into @LunarSet values(2008, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 354) insert into @LunarSet values(2009, 2, 2, 1, 1, 5, 1, 2, 1, 2, 1, 2, 2, 384) insert into @LunarSet values(2010, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354) insert into @LunarSet values(2011, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(2012, 2, 1, 6, 2, 1, 2, 1, 1, 2, 1, 2, 1, 384) insert into @LunarSet values(2013, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(2014, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 384) insert into @LunarSet values(2015, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 355) insert into @LunarSet values(2016, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 354) insert into @LunarSet values(2017, 2, 1, 1, 2, 3, 2, 1, 2, 1, 2, 2, 2, 384) insert into @LunarSet values(2018, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 354) insert into @LunarSet values(2019, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 354) insert into @LunarSet values(2020, 2, 1, 2, 5, 2, 1, 1, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(2021, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(2022, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 355) insert into @LunarSet values(2023, 1, 5, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 384) insert into @LunarSet values(2024, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 354) insert into @LunarSet values(2025, 2, 1, 2, 1, 1, 5, 2, 1, 2, 2, 2, 1, 384) insert into @LunarSet values(2026, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 355) insert into @LunarSet values(2027, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 354) insert into @LunarSet values(2028, 1, 2, 2, 1, 5, 1, 2, 1, 1, 2, 2, 1, 383) insert into @LunarSet values(2029, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 355) insert into @LunarSet values(2030, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 354) insert into @LunarSet values(2031, 2, 1, 5, 2, 1, 2, 2, 1, 2, 1, 2, 1, 384) insert into @LunarSet values(2032, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(2033, 1, 2, 1, 1, 2, 1, 5, 2, 2, 2, 1, 2, 384) insert into @LunarSet values(2034, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 354) insert into @LunarSet values(2035, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 354) insert into @LunarSet values(2036, 2, 2, 1, 2, 1, 4, 1, 1, 2, 1, 2, 2, 384) insert into @LunarSet values(2037, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 354) insert into @LunarSet values(2038, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 354) insert into @LunarSet values(2039, 2, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 1, 384) insert into @LunarSet values(2040, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 355) insert into @LunarSet values(2041, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355) insert into @LunarSet values(2042, 1, 5, 1, 2, 1, 2, 1, 2, 2, 2, 1, 2, 384) insert into @LunarSet values(2043, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 354) select @int_year = year('1901'), @tYearDays = 0 while @int_year < year(@LunaDay) begin select @tYearDays = @tYearDays + (select y_total from @LunarSet where yyyy = @int_year) set @int_year = @int_year + 1 end set @int_month = 1 select @m_Str = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12 from @LunarSet where yyyy = @int_year while @int_month < month(@LunaDay) begin select @tYearDays = @tYearDays + (case cast(substring(@m_Str, @int_month, 1) as int) when 1 then 29 when 2 then 30 when 3 then 58 when 4 then 59 when 5 then 59 when 6 then 60 end) set @int_month = @int_month + 1 end if @yun = 'n' begin --À±´ÞÀÌ ¾Æ´Ò¶§ set @tYearDays = @tYearDays + day(@LunaDay) end else if @yun = 'y' begin --À±´ÞÀ϶§ select @tYearDays = @tYearDays + (case cast(substring(@m_Str,month(@LunaDay), 1) as int) when 3 then 29 when 4 then 29 when 5 then 30 when 6 then 30 else null end) set @tYearDays = @tYearDays + day(@LunaDay) end select convert(varchar(10),dateadd(dd, @tYearDays-1, '1901-02-19'), 120)