DBMS/MS-SQL

[MS-SQL] 날짜, 시간차이 구하기 (DATEDIFF)

Fly_Mir 2018. 6. 14. 17:24

MS-SQL에서 두개의 날짜사이의 차이값을 구해보자.

DATEDIFF() 함수는 두날의 차이를 int로 반환하는 Mssql 내장함수이다.

단순히 차이나는 일수뿐만 아니라 년도 차이나 시간 차이 혹은 몇주차인지도 확인할수 있다.

    SELECT DATEDIFF('구분자','Start_Date','End_Date')

DATEDIFF()는 총 3개의 인수가 있는데 Start_Date와 End_Date는 차이를 구할 두개의 날짜값을 넣는곳이고 '구분자'는 어떤차이를 구할지 정해주는 부분이다.

예를 들어 두 날짜사이의 일자 차이를 구하고 싶으면 'day' 혹은 'dd'등을 넣어주면 된다.


만약 2018년의 전체 일수를 구하는 쿼리문을 적는다면

    SELECT DATEDIFF(dd,'2018-01-01','2018-12-31') + 1 

위와같이 구분값을 dd로 넣어주면 된다.

(자주하는 실수인데 한달 일수를 구하는데 31일 - 1일을 하면 30일이 된다.)


구분자의 종류는 아래와 같다.

구분자 약어
년도 year yy,yyyy
분기 quarter qq,q
month mm,m
day dd,d
week wk
시간 hour m
minute mi,n
second ss,s
밀리초 millisecond ms
마이크로초 microsecond mcs
나노초 nanosecond ns

※Int형으로 반환하기 때문에 Int 범위를 넘어서는 차이는 구하지 못한다.

예를들어 밀리초의 경우 최대 차이는 24일 정도 초의 경우는 68년 정도이다.

날다의 운영환경
본체DeskTop
O SWindows7 Ultimate K
ApplicationMicrosoft SQL Server Management Studio 2012
MS-SQLMicorsoft SQL Server 2008 R2 (10.50.1765.0)