DB

[MSSQL] 이전월 1일부터 말일까지 검색 조건 생성(통계 쿼리 작성시)


현재일자를 기준으로 이전월 통계 자료를 구해야하는 경우, 현재일자를 기준으로 전월 시작일과 종료일을 구하는 방법에 대해 알아본다. DATEADD 함수를 사용하면 쉽게 해결할 수 있으며, DATEPART 구분자를 사용하여 년,월,일,시간,분 등의 차이값을 구할 수 있다.

 

datepart 이름 datepart약어
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
microsecond mcs
nanosecond ns

기본예제

SELECT DATEADD(month, 1, '20220705');
SELECT DATEADD(month, 1, '2022-07-05');
SELECT DATEADD(month, 1, GETDATE());


 

이전월의 시작일 구하기

SELECT CONVERT(VARCHAR, LEFT(CONVERT(VARCHAR(10), DATEADD(M,-1, GETDATE()), 112), 6) +'01') + ' 00:00:00'


이전월의 마지막날 구하기

SELECT CONVERT(VARCHAR,DATEADD(M, -1, EOMONTH(GETDATE()))) + ' 23:59:59'


 BETWEEN A AND B 함수를 사용하여 기간 검색을 해도 되고 >= <=를 사용하여 조건을 비교해도 된다.

WHERE CRT_TIME BETWEEN CONVERT(VARCHAR, LEFT(CONVERT(VARCHAR(10), DATEADD(M,-1, GETDATE()), 112), 6) +'01') + ' 00:00:00' 
AND CONVERT(VARCHAR,DATEADD(M, -1, EOMONTH(GETDATE()))) + ' 23:59:59'

 

현재일자의 시작일자 만들기

SELECT CONVERT(VARCHAR, CONVERT(DATE, LEFT(CONVERT(VARCHAR(10),GETDATE(), 112), 6) + '01')) + ' 00:00:00'


 

현재일자 기준으로 마지막 날짜 구하기

SELECT CONVERT(VARCHAR,EOMONTH(GETDATE())) + ' 23:59:59'

EOMONTH 함수를 사용하면 현재일자의 마지막 날은 쉽게 구할 수 있다.


 

최근 몇 일 기준 조건에 부합하는 쿼리 생성

다음은 최근 7일기준에 만족하는 데이터를 조회하기 위한 예제이다.

AND CRT_TIME >= DATEADD(DAY, -7, GETDATE())

 

[REFERENE]

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver16 

 

DATEADD(Transact-SQL) – SQL Server

DATEADD 함수의 Transact-SQL 참조입니다. 이 함수는 지정된 날짜 부분에서 수정된 날짜를 반환합니다.

docs.microsoft.com

 

 

[MSSQL] 날짜와 날짜 사이의 차이 일수 구하는 방법 : DATEDIFF

시작일과 종료일 사이의 차이 일수를 구하는 방법으로 DATEDIFF 함수를 사용하면 쉽게 구할 수 있다. DATEPART 구분자를 사용하여 년,월,일,시간,분 등의 차이를 확인할 수 있다. SELECT DATEDIFF(DAY, ‘2022-0

playground.naragara.com

 

Leave a Reply

error: Content is protected !!