DB/MSSQL

[MSSQL] [날짜] 1.날짜 연산 함수(DATEADD, DATEDIFF)

alien22c 2024. 2. 28. 10:18
728x90
728x90

 
자주 사용하면서 찾게되는 날짜함수를 정리해본다.
참고로, 요즘은 다들 글로벌 서비스를 하고 있어 날짜 반환 함수로 GETDATE()보다는 타임오프셋을 확인할 수 있는 SYSDATETIMEOFFSET()을 많이 사용하게 된다. 예제SQL에서는 SYSDATETIMEOFFSET()을 사용하였다.

DATEADD

: 날짜에 원하는 일수를 더하거나 빼서 출력해 주는 함수

  • 구문: DATEADD (datepart, number, date )  -- 지정된 date의 지정된 datepart에 간격을 더하여 새 datetime 값을 반환
  • 예제SQL
SELECT DATEADD(DAY, -1, SYSDATETIMEOFFSET()) AS [어제]
               , DATEADD(DAY, 1, SYSDATETIMEOFFSET()) AS [내일]
;

 

DATEDIFF

: 시작일자와 종료일자 사이의 일수 또는 시간, 분, 초 등의 차이를 계산해주는 함수

  • 구문: DATEDIFF ( datepart , startdate , enddate )  -- startdate와 enddate 사이의 datepart 차이를 계산
  • 예제SQL
SELECT DATEDIFF(YEAR, '2023-02-27', SYSDATETIMEOFFSET())    AS '년'
                ,DATEDIFF(MONTH, '2023-02-27', SYSDATETIMEOFFSET())   AS '월'
               ,DATEDIFF(DAY, '2023-02-27', SYSDATETIMEOFFSET()) AS '일'
;

 
 
참고) DATEPART 정리
 
SELECT SYSDATETIMEOFFSET() AS [오늘]      -- 조회결과: 2024-02-28 09:50:27.2998164 +09:00

명칭DATEPARTDATEPART(약어)반환값비고
YEARYY, YYYY2024 
MONTHMM, M2 
DAYDD, D28 
HOURHH9 
MINUTEMI, N50 
SECONDSS, S27 
밀리초MILLISECONDMS 299 
마이크로초MICROSECONDMCS299816 
나노초NANOSECONDNS299816400 
WEEKWK, WW9 
분기QUARTERQQ, Q1 
타임오프셋TZOFFSETTZ540시간 오프셋을 분 단위로 반환

 

728x90
728x90