본문 바로가기
IT/MSSQL

[MSSQL] 날짜함수 포맷(GETDATE,DATEPART,DATEADD,DATEDIFF)

by 베베야 2021. 3. 12.
728x90

MSSQL에서는 다양한 함수 포맷이 존재합니다. 날짜의 경우 CONVERT 함수와 문자열 자르는 함수를 잘 조합하면 원하는 결과 값을 얻을 수는 있습니다.
하지만 간단한 함수 사용으로 긴 쿼리문을 간결하게 사용하게 도와주는GETDATE, DATEPART, DATEADD, DATEDIFF라는 함수들이 있습니다. 오늘은 이 4가지의 함수가 무엇인지 알아보고 예제를 통해서 자세히 배워 보도록 하겠습니다.

 

 

GETDATE

GETDATE 함수는 현재 내 컴퓨터에 설정되어있는 시간을 불러오는 함수입니다.
이 함수로 시간을 불러오게 되면 "2021-03-12 14:27:28.017" 형식으로 년-월-일 시-분-초 형식으로 나오게 됩니다.
개발을 하다보면 다양한 형식의 포맷을 사용하게 되는데요. 몇 가지 형식에 대해서 알아보겠습니다.

--현재 날짜 : 2021-03-12 15:42:31.633
SELECT GETDATE() AS 현재시간;

--현재 날짜의 년,월,일
SELECT YEAR(GETDATE()) AS 년;
SELECT MONTH(GETDATE()) AS 월;
SELECT DAY(GETDATE()) AS 일;

/* CONVERT 함수를 사용한 다양한 포맷*/

--YYYYMMDD : 20210312
Select Convert(varchar(10),Getdate(),112)

--YYYY/MM/DD : 2021/03/12
Select Convert(varchar(10),Getdate(),111)

--HH:MM:SS : 15:18:13
Select Convert(varchar(8),Getdate(),108)

--HHMMSS : 151907
Select Replace(Convert(varchar(8),Getdate(),108),':','')

--HH:MM:SS:mmm : 15:18:20:400
Select Convert(varchar(12),Getdate(),114)

--HHMMSSmmm : 151939480
Select Replace(Convert(varchar(12),Getdate(),114),':','')

--YYYY/MM/DD HH:MM:SS : 2021/03/12 15:20:33
Select Replace(Convert(varchar(30),Getdate(),120),'-','/')

--YYYYMMDDHHMMSS : 20210312152135
Select Convert(varchar(10),Getdate(),112) + Replace(Convert(varchar(8),Getdate(),108),':','')

 

DATEPART


DATEPART 함수는 GETDATE에서 조회날 날짜를 가지고 특정 부분인 
년도, 월, 일, 분기 등 부분적인 날짜를 출력해주는 함수입니다.

--현재 년도 : 2021
SELECT DATEPART(YEAR,GETDATE()); 

--현재 월 : 3
SELECT DATEPART(MONTH,GETDATE())

--현재 일 : 12
SELECT DATEPART(DAY,GETDATE())

--현재 분기 : 1
SELECT DATEPART(QQ,GETDATE())

--올해의 몇번째 날 : 71
SELECT DATEPART(DAYOFYEAR,GETDATE())

--올해의 몇째 주 : 11
SELECT DATEPART(WEEK,GETDATE())

--이번주의 몇번째 날 : 6
SELECT DATEPART(WEEKDAY,GETDATE())

--오늘의 요일 확인
SELECT
CASE DATEPART(WEEKDAY, GETDATE()) 
  WHEN '1' THEN '일요일'
  WHEN '2' THEN '월요일'
  WHEN '3' THEN '화요일'
  WHEN '4' THEN '수요일'
  WHEN '5' THEN '목요일'
  WHEN '6' THEN '금요일'
  ELSE '토요일'
END AS '[요일]'

 

 

DATEADD

DATEADD 함수는 입력한 날짜에 원하는 일수를 더해서 계산해주는 함수입니다.
지금으로부터 몇일 뒤가 몇 월인지 계산하기가 쉽지 않은데 이 함수를 사용하면 간단하게 결과를 얻을 수 있습니다.

--3개월 후 : 2021-06-12 15:36:24.713
SELECT DATEADD(MM,3,GETDATE()) AS '3개월 후'

--60일 전 : 20210111
SELECT CONVERT(NVARCHAR(8),DATEADD(DAY,-60,GETDATE()),112)AS '60일전'

--3달 뒤 요일 : 토요일
SELECT DATENAME(WEEKDAY,DATEADD(MM,3,GETDATE())) AS'3달 후 요일'

 

DATEDIFF

DATEDIFF 함수는 입렵한 2개의 날짜 사이의 차이를 계산해주는 함수입니다.
년도, 월, 일로 설정된 값에 따라 차이 값을 구할 수 있습니다.

--현재 날짜는 2021.03.12 입니다
--지정일과의 현재와의 년도차이 : 1
SELECT DATEDIFF(YY,'2020-01-01',GETDATE())

--지정일과의 현재와의 월차이 : 14
SELECT DATEDIFF(MM,'2020-01-01',GETDATE())

--지정일과 현재와의 일차이 : 436
SELECT DATEDIFF(DD,'2020-01-01',GETDATE())


이상으로 다양한 날짜함수(GETDATE,DATEPART,DATEADD,DATEDIFF)를 사용한 날짜 포맷 변경하는 방법에 대해서 알아보았습니다.

반응형
그리드형

댓글