MS-SQL Server

[소개]SQL Server 2012 (Denali)에서 추가된 날짜 함수

임현수 2011. 7. 26. 00:15
SQL Server 2012 (Denali)에서 추가된 날짜 함수 중 유용한 함수 2개를 소개드립니다.

1. EOMONTH 함수 (해당월의 마지막 날짜를 반환)

  -- 날짜변수 선언/할당 (윤달로 테스트 진행)

  declare @SampleDate datetime = '2012-02-14'

    
  -- SQL Server 2008 이하 버전에서는 다음달을 구한 뒤 -1일을 해서 찾음

  SELECT cast(convert(varchar(7), dateadd(month, 1, @SampleDate), 120) + '-01' as datetime) -1 AS LastDayOfMonth

 

  -- SQL Server 2011 (Denali)

  SELECT EOMONTH(@SampleDate) AS LastDayOfMonth


  -- 결과


2. FORMAT 함수 (날짜/시간, 숫자값을 원하는 문자열 포맷으로 보여줌) 

  -- 날짜변수 선언/할당 (오늘로 할당)

  declare @CurrentDay datetime = getdate()

 
  -- SQL Server 2008 이하 버전에서 날짜,시간을 붙여서 보여주고 싶은 경우 replace 함수를 활용하여 구현
  select replace(replace(replace(convert(varchar(16), @CurrentDay, 120), '-', ''), ':', ''), ' ', '') as CurrentDay

 

  -- SQL Server 2011 (Denali)

  select format(@CurrentDay, 'yyyyMMddHHmm', 'ko-kr') as CurrentDay

 

  -- 결과


  -- 의견

   오라클에서는 날짜를 내가 원하는 포맷으로 변형하기가 쉬웠는데, mssql로 오면서 제한된 format 내에서 사용하려고 하니 
   약간 번거로운 면이 있었습니다. 이번에 format 함수가 나와서 한결 편하게 개발이 가능할 것 같네요.
 

*. 참고문헌
  1. SQL Server 2011 날짜함수 도움말
  2. EndOfMonth Function Article
  3. Format Function Article