전산이야기

SQL서버 2012 이후 새로운 함수가 추가 되었는데 잘 모를 수 있어서 
공유하니 개발시에 도움되기 바랍니다.

1. 월의 마지막 일자

이전에는 월의 마지막 일자를 구하기 위하여 이런식 비슷하게 사용했을 것이다.
(여기서는 전월의 마지막 일자)


SELECT CONVERT(VARCHAR(8), DATEADD(D, -1, CONVERT(VARCHAR(6), GETDATE(), 112) + '01'), 112)

 

SQL서버 2012이후 제공되는 EOMONTH, FORMAT 함수를 이용하면 간단히 다음과 같이 할 수 있다.


SELECT FORMAT(EOMONTH(getdate(), -1), 'yyyyMMdd')



2. 숫자에 천단위 표시

위에서 이미 사용해 본 FORMAT 함수를 이용하면 된다.

SELECT FORMAT(123456789, '#,#'



​3. CASE​를 간단하게

아래 쿼리를 

SELECT  CASE DATEPART(WEEKDAY, GETDATE())

                                WHEN 1 THEN '일요일'

                                WHEN 2 THEN '월요일'

                                WHEN 3 THEN '화요일'

                                WHEN 4 THEN '수요일'

                                WHEN 5 THEN '목요일'

                                WHEN 6 THEN '금요일'

                                WHEN 7 THEN '토요일'

                     END

 

CHOOSE함수를 이용해서 다음과 같이 간단하게 구현할 수 있다.


SELECT CHOOSE(DATEPART(WEEKDAY, GETDATE())                     

    , '일요일','월요일','화요일','수요일','목요일','금요일','토요일')

 


​4. 이건 2012에 추가된 것은 아니지만 기억상실증을 예방 하기 위하여...

문자열이 날짜인지, 숫자인지 확인하는 함수

SELECT ISDATE('20161032'), ISDATE('20161031')

SELECT ISNUMERIC('123'), ISNUMERIC('a123'), ISNUMERIC('123a')

 


Comment +0