본문 바로가기

프로그램/MS SQL

MSSQL 날짜 계산

반응형

 

날짜 및 시간 함수

 

DATEPART : 날짜의 특정 부분을 나타내는 정수를 반환한다.

DATEPART (datepart, date)

 

인수

datepart : 새 값을 반환할 날짜 부분을 지정하는 매개 변수

date : 유효한 날짜 또는 날짜 형식의 문자열을 반환

 

주의

인수가 null이면 DATEPART결과도 null이다.

 

약어(DATEPART, DATEADD, DATEDIFF 공통)

Year : yy, yyyy

Quarter : qq, q

Month : mm, m

DayofYear : dy, y

Day : dd, d

Week : wk, ww

Weekday : dw, w

Hour : Hh

Minute : mi, n

Second : ss, s

Millisecond : Ms

 

사용 예

SELECT DATEPART("yy", GETDATE()) as Year

SELECT DATEPART("qq", GETDATE()) as Quarter

SELECT DATEPART("mm", GETDATE()) as month

SELECT DATEPART("dy", GETDATE()) as DayofYear

SELECT DATEPART("dd", GETDATE()) as Day

SELECT DATEPART("wk", GETDATE()) as Week

SELECT DATEPART("dw", GETDATE()) as Weekday

SELECT DATEPART("hh", GETDATE()) as Hour

SELECT DATEPART("mi", GETDATE()) as Minute

SELECT DATEPART("ss", GETDATE()) as Second

SELECT DATEPART("ms", GETDATE()) as Millisecond

 

 

 

 

 

 

DATEADD : 날짜에서 지정한 날짜 부분에 날짜 또는 시간 간격을나타내는 숫자를 더한 후

새로운 DT_DBTIMESTAMP 값을 반환한다. 숫자 매개 변수는 정술 계산되고날짜 매개 변수는

유효한 날짜여야 한다.

 

구문

DATEADD(datepart, number, date)

 

인수

datepart : 숫자를 더할 날짜 부분을 지정하는 매개 변수

number : datepart에 더해지는 값. ( 값은 식을 구문 분석할 때 알려진 정수 값이어야 한다. )

date : 유효한 날자 또는 날짜 형식의 문자열을 반환하는 식

 

사용 예

SELECT DATEADD("yy",1, GETDATE()) as "1년후"

SELECT DATEADD("mm",1, GETDATE()) as "한달후"

SELECT DATEADD("dd",1, GETDATE()) as "1일후"

 

SELECT DATEADD("yy",-1, GETDATE()) as "1년전"

SELECT DATEADD("mm",-1, GETDATE()) as "한달전"

SELECT DATEADD("dd",-1, GETDATE()) as "1일전"

 

DATEDIFF : 지정한 두 날짜 간에 교차되는 날짜와 시간 경계값을반환한다. datepart 매개 변수는 비교할 날짜 및 시간 범위를 식별한다.

 

구문

DATEDIFF(datepart, startdate, enddate)

 

인수

datepart : 비교하여 값을 반환할 날짜 부분을 지정하는 매개변수

startdate : 간격의 시작 날짜

enddate : 간격의 종료 날짜

 

사용 예

SELECT DATEDIFF("yy", getdate(), '2023/04/08') as "2023/04/08 남은년수"

SELECT DATEDIFF("mm", getdate(), '2023/04/08') as "2023/04/08 남은개월수"

SELECT DATEDIFF("dd", getdate(), '2023/04/08') as "2023/04/08 남은일수"

 

 

 

 

 

시작시간과 종료시간의 데이터가 있을 때

종료시간이 시작시간 보다 2시간 이상인 데이터를 출력하고 싶다면

1. DATEADD 사용 : DATEADD("mi",120, indate) <= outdate

2. DATEDIFF 사용 : DATEDIFF("mi",indate, outdate) >= 120

반응형