[SQL2012] 월의 마지막을 구하는 EOMONTH
안녕하세요? SQL Frontier 3기 윤선식입니다.
SQL Server 2012에는 월의 마지막을 구하는 EOMONTH라는 날짜함수를 제공합니다.
성대중님께서 이야기하신 http://www.sqler.com/474836#comment_475091 부분에 대한 부가설명이라고 보시면 됩니다.
만약 이 달의 마지막 날을 구하고자 한다면?
만약 두 달 뒤의 마지막 날을 구하고자 한다면?
SQL Server 2012 이전에는 다음과 같이 해야 했습니다.
DECLARE @DT1 VARCHAR(10); DECLARE @DT2 DATETIME; SET @DT1 = '2012-02-20'; SET @DT2 = CONVERT(DATETIME, @DT1); SELECT CONVERT(VARCHAR(10),DATEADD(d,-1,DATEADD(m,1,CONVERT(DATETIME,LEFT(@DT1,8) + '01'))),120) AS 'EOMONTH(@DT1)', CONVERT(VARCHAR(10),DATEADD(d,-1,DATEADD(m,1,CONVERT(DATETIME,CONVERT(VARCHAR(8),@DT1) + '01'))),120) AS 'EOMONTH(@DT2)', CONVERT(VARCHAR(10),DATEADD(d,-1,DATEADD(m,3,CONVERT(DATETIME,LEFT(@DT1,8) + '01'))),120) AS 'EOMONTH(@DT1,2)', CONVERT(VARCHAR(10),DATEADD(d,-1,DATEADD(m,3,CONVERT(DATETIME,CONVERT(VARCHAR(8),@DT1) + '01'))),120) AS 'EOMONTH(@DT2,2)' |
흠… 그다지 쉽지 않네요.
하지만 SQL Server 2012에서는 EOMONTH를 사용해서 다음과 같이 간단하게 처리할 수 있습니다.
DECLARE @DT1 VARCHAR(10); DECLARE @DT2 DATETIME; SET @DT1 = '2012-02-20'; SET @DT2 = CONVERT(DATETIME, @DT1); SELECT EOMONTH(@DT1) AS 'EOMONTH(@DT1)', EOMONTH(@DT2) AS 'EOMONTH(@DT2)', EOMONTH(@DT1,2) AS 'EOMONTH(@DT1,2)', EOMONTH(@DT2,2) AS 'EOMONTH(@DT2,2)' |
참 쉽죠잉?
상세내역은 다음 URL을 참고하세요.
http://msdn.microsoft.com/ko-kr/library/hh213020(v=sql.110).aspx
참고로 이것은 RC0 기준입니다.