본문 바로가기
DataBase/MsSql

MSSQL 날짜함수,시간함수 사용법 정리 및 설명

by 아우럼 2024. 4. 14.
반응형

MSSQL에는 다양한 날짜함수 하고 시간함수를 지원하므로 사용법에 대해서 설명합니다.

날짜함수, 시간함수 특징

  • 데이터베이스에서 날짜와 시간을 추출, 계산, 변환하는 데 유용하게 활용됩니다.
  • 날짜함수와 시간함수를 원하는 형태로 변환할 수 있어야 합니다.

날짜함수, 시간함수 사용법 및 설명

ISDATE() 함수.

  • 날짜함수로 변환 가능하지 체크할 때 사용합니다.
  • 매개변수의 값이 날짜 형태인 경우 '1'을 반환하지만 날짜가 아닌 경우 '0'을 반환합니다.
 -- ISDATE()  function.
SELECT ISDATE(GETDATE()) AS dateCheckIsOk
      ,ISDATE('NoDate')  AS dateCheckIsNo
;

GETDATE() 함수.

  • database 세팅된 현재 시스템의 날짜와 시간을 반환하는 함수입니다.
  • 비결정적인 함수로 호출할 때마다 시스템 시간을 기반으로 현재 값을 return 합니다.
  • 자주 사용하지는 않지만 GETUTCDATE() , SYSDATETIME() , SYSDATETIMEOFFSET() , SYSUTCDATETIME() , CURRENT_TIMESTAMP 함수도 확인하세요.
 -- GETDATE()  function.
 SELECT GETDATE()
       ,GETUTCDATE()
       ,SYSDATETIME()
       ,SYSDATETIMEOFFSET()
       ,SYSUTCDATETIME()
       ,CURRENT_TIMESTAMP
;

YEAR(), MONTH(), DAY() 함수.

  • YEAR() 함수는 입력한 날짜에서 연도를 반환합니다.
  • MONTH() 함수는 입력한 날짜에서 월을 반환합니다.
  • DAY() 함수는 입력한 날짜에서 일을 반환합니다.
-- YEAR(),MONTH(),DAY() 함수
SELECT GETDATE()       AS 'FULL_DATE'
      ,YEAR(GETDATE())  AS 'YEAR'
      ,MONTH(GETDATE()) AS 'MONTH'
      ,DAY(GETDATE())   AS 'DAY'
;

DATEPART(), DATENAME() 함수.

  • DATEPART(), DATENAME() 함수는 날짜 데이터로부터 연도, 월, 일, 시, 분, 초, 요일, 분기, 일 년 중 며칠인지, 일 년 중에서 몇 주인지 추출하는 데 사용됩니다.
-- 2024-04-13 23:39:33.260
SELECT DATEPART(YEAR, GETDATE())      AS 'DATEPART_연도'
      ,DATENAME(YEAR, GETDATE())      AS 'DATENAME_연도'
      ,DATEPART(MONTH, GETDATE())     AS 'DATEPART_월'
      ,DATENAME(MONTH, GETDATE())     AS 'DATENAME_월'
      ,DATEPART(DAY, GETDATE())       AS 'DATEPART_일'
      ,DATENAME(DAY, GETDATE())       AS 'DATENAME_일'
      ,DATEPART(HOUR, GETDATE())      AS 'DATEPART_시'
      ,DATENAME(HOUR, GETDATE())      AS 'DATENAME_시'
      ,DATEPART(MINUTE, GETDATE())    AS 'DATEPART_분'
      ,DATENAME(MINUTE, GETDATE())    AS 'DATENAME_분'
      ,DATEPART(SECOND, GETDATE())    AS 'DATEPART_초'
      ,DATENAME(SECOND, GETDATE())    AS 'DATENAME_초'
      ,DATEPART(WEEKDAY, GETDATE())   AS 'DATEPART_요일'
      ,DATENAME(WEEKDAY, GETDATE())   AS 'DATENAME_요일'
      ,DATEPART(QUARTER, GETDATE())   AS 'DATEPART_분기'
      ,DATENAME(QUARTER, GETDATE())   AS 'DATENAME_분기'
      ,DATEPART(DAYOFYEAR, GETDATE()) AS 'DATEPART_일년_일수'
      ,DATENAME(DAYOFYEAR, GETDATE()) AS 'DATENAME_일년_일수'
      ,DATEPART(WEEK, GETDATE())      AS 'DATEPART_일년_주'
      ,DATENAME(WEEK, GETDATE())      AS 'DATENAME_일년_주'
;

DATEPART(), DATENAME() 함수 예제 입니다.
DATEPART(), DATENAME() 함수 예제 입니다.

DATEADD() 함수.

  • 날짜나 시간에 대해 연산할 때 사용하는 함수입니다.
  • 날짜에 지정된 간격을 더하거나 빼는 데 주로 사용합니다.
  • 함수 형태는 DATEADD(datepart, number, inputDate)입니다.
  • datepart는 시간 간격을 지정합니다. 예를 들면 'year’은 년을 나타냅니다.
  • number는 더하거나 뺄 값입니다.
  • inputDate는 기준이 되는 날짜입니다.
/*
DATEADD() function
년도(Year or yy)
월(Month or mm)
일자(Day or dd)
주(Week or ww)
시 분 초 (Hour, Minute, Second)
*/
SELECT DATEADD(YEAR, 2, GETDATE())      AS 'GETDATE에서 2년 뒤 날짜'
      ,DATEADD(yy, -2, GETDATE())       AS 'GETDATE에서 2년 전 날짜'
      ,DATEADD(MONTH, 3, GETDATE())     AS 'GETDATE에서 3개월 뒤 날짜'
      ,DATEADD(mm, -5, GETDATE())       AS 'GETDATE에서 5개월 전 날짜'
      ,DATEADD(DAY, 5, GETDATE())       AS 'GETDATE에서 5일 뒤 날짜'
      ,DATEADD(dd, -8, GETDATE())       AS 'GETDATE에서 8일 전 날짜'
      ,DATEADD(WEEK, 1, GETDATE())      AS 'GETDATE에서 1주 뒤 날짜'
      ,DATEADD(ww, -2, GETDATE())       AS 'GETDATE에서 2주 전 날짜'
      ,DATEADD(HOUR, 8, GETDATE())      AS 'GETDATE에서 8시간 뒤 시간'
      ,DATEADD(MINUTE, -70, GETDATE())  AS 'GETDATE에서 70분 전 시간'
      ,DATEADD(SECOND, 20, GETDATE())   AS 'GETDATE에서 20초 뒤 시간'
;

DATEDIFF() 함수.

  • 함수의 형태는 DATEDIFF(datepart, startDate, endDate)입니다.
  • 날짜를 비교하고 DATEPART 구분자에 따라 차이를 계산하여 결과를 정수로 반환합니다.
  • datepart는 시간 간격을 지정합니다. 예를 들어, 'month’는 월을 나타냅니다.
  • startDate는 시작 날짜입니다.
  • endDate는 종료 날짜입니다.
/*
-- DATEDIFF() 함수
DAY:  일 수를 반환.
MONTH: 월이 바뀐 횟수를 반환.
YEAR: 년이 바뀐 횟수를 반환.
*/
SELECT DATEDIFF(DAY   ,DATEADD(YEAR, -2, GETDATE()), GETDATE())   AS '일 수를 반환'
      ,DATEDIFF(MONTH ,DATEADD(YEAR, -2, GETDATE()), GETDATE())   AS '월이 바뀐 횟수를 반환'
      ,DATEDIFF(YEAR  ,DATEADD(YEAR, -2, GETDATE()), GETDATE())   AS '년이 바뀐 횟수를 반환'
;

날짜함수, 시간함수 마무리

DATEPART 표시 방법.

구분 DATEPART(full) DATEPART(short)
년도 YEAR YYYY,YY
MONTH MM, M
일자 DAY DD, D
시간 HOUR HH
MINUTE MI, N
SECOND SS, S
MILLI MILLISECOND MS
주 단위 WEEK WK
분기 단위 QUARTER QQ, Q

반응형