[MSSQL] 날짜함수(GETDATE,DATEADD,DATEPART,DATEDIFF) 사용법 & 예제

MSSQL에서는 날짜를 여러 가지 형태로 가공할 수 있는 함수들을 많이 제공하고 있습니다. 이번 포스팅에서는 대표적인 날짜 함수(GETDATE, DATEADD, DATEPART, DATEDIFF)의 사용법에 대해서 알아보도록 하겠습니다.

 

GETDATE 

GETDATE함수는 현재 컴퓨터에 설정되어있는 시스템 시간을 불러와주는 함수입니다.

2018-03-31 오전 01:40:30 

위와 같이 GETDATE() 함수는 년월일은 물론이거니와 분, 초 까지도 구해줍니다. 하지만 모든 사용자들이 위와 같은 형식으로 사용하지는 않겠죠. 여기서 우리는 우리가 표시할 시간이나 날짜만 적절히 뽑아 올 수도 있고 날짜 형태를 바꿔서 출력할 수도 있습니다.

 

사용법

--현재 날짜 출력--
SELECT GETDATE() AS 시스템일자

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

 

출력 포맷 변경

--YYYY/MM/DD--
Select Convert(varchar(10),Getdate(),111)

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

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

--HH:MM:SS:mmm--
Select Convert(varchar(12),Getdate(),114)

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

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

--YYYY/MM/DD HH:MM:SS--
Select Replace(Convert(varchar(30),Getdate(),120),'-','/')

--YYYY/MM/DD HH:MM:SS--
Select Replace(Convert(varchar(30),Getdate(),121),'-','/')

--YYYY/MM/DD HH:MM:SS--
Select Convert(varchar(10),Getdate(),111) + Space(1) + Convert(varchar(8),Getdate(),108)

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

 

DATEADD 

DATEADD함수는 날짜에 원하는 일수를 더해서 출력해주는 함수입니다. 100일 뒤에는 며칠이다 이런 것은 쉽게 계산하기 힘든데 DATEADD함수를 쓰면 이런 것들을 편리하게 계산할 수 있습니다. 이 함수를 좀 더 응용하면 100일 뒤에는 무슨 요일이다 이렇게도 응용 가능합니다.

사용법

--2개월 후 출력--
SELECT DATEADD(MM,2,GETDATE()) AS '2개월후'

--30일전 출력--
SELECT CONVERT(NVARCHAR(8),DATEADD(DAY,-30,'20180124'),112)AS '30일전'

--1달 뒤 요일계산
SELECT DATENAME(WEEKDAY,DATEADD(MM,1,GETDATE())) AS'요일계산'

 

 

DATEPART 

DATEPART함수는 날짜에서 지정한 날짜 형식의 부분만 출력해주는 함수입니다. 아주 다양하게 활용이 가능한 함수입니다.

사용법

--현재 년도 구하기
SELECT DATEPART(YEAR,GETDATE()); 

--현재 월 구하기--
SELECT DATEPART(MONTH,GETDATE())

--현재 일 구하기--
SELECT DATEPART(DAY,GETDATE())

--현재 분기 구하기--
SELECT DATEPART(QQ,GETDATE())

--올해의 몇번째 날인지 구하기--
SELECT DATEPART(DAYOFYEAR,GETDATE())

--올해의 몇째 주인지 구하기--
SELECT DATEPART(WEEK,GETDATE())

--이번주의 몇번째 날인지 구하기--
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 '요일'

 

DATEDIFF 

DATEDIFF함수는 지정한 두 날자 간의 간격을 계산해주는 함수입니다. 정해준 날짜 형식에 맞춰 리턴 값이 다르므로 적절하게 잘 설정해주셔야 합니다.

사용법

--지정일과의 현재와의 년도차이 계산--
SELECT DATEDIFF(YY,'2000-01-01',GETDATE())

--지정일과의 현재와의 월차이 계산--
SELECT DATEDIFF(MM,'2000-01-01',GETDATE())

--지정일과 현재와의 일차이 계산--
SELECT DATEDIFF(DD,'2000-01-01',GETDATE())

 

[MS_SQL] 문자열 자르기 (LEFT, RIGHT, SUBSTRING) 사용법 & 예제

[MS_SQL] 데이터 타입 변환 (CONVERT, CAST) 사용법 & 예제

[MS_SQL] 문자열 치환 (REPLACE, STUFF) 사용법 & 예제

[MS_SQL] 공백 제거 (LTRIM, RTRIM) 사용법 & 예제

[MS_SQL] 동적 피벗 테이블 만들기

 

댓글

Designed by JB FACTORY