YYYY MM 이렇게 년월이 분리되어 있을 때 최근 3개월 단위로 조회를 하고자 할 때 어떻게 조회해야 할까요 ???
SELECT * FROM TBl_STORE
WHERE CONVERT(DATETIME,EOMONTH(CONCAT(YYYY, RIGHT('0' + CONVERT( NVARCHAR, MM), 2),'01'))) >= DATEADD(MONTH, -3, '20201201')
AND CONVERT(DATETIME,EOMONTH(CONCAT(YYYY, RIGHT('0' + CONVERT( NVARCHAR, MM), 2),'01'))) <= CONVERT(DATETIME, EOMONTH('20201201'))
현재에는 위와같이 코딩되어있습니다....
최근 3개월 데이터를 조회하려고 할 때 INDEX 컬럼인 YYYY와 MM을 변형하지 않고 어떻게 조회해야 할까요
좋은 조언 부탁드립니다...
년, 월 따로 관리하는 것은 여러모로 좋지 않습니다.
(년월) 또는 (년월일) 또는 (일시) 형태의 하나의 항목으로 관리하는 것이 좋습니다.
테이블 설계 변경이 불가하다면 컬럼을 가공해서 조건을 줘야 하거나.
컬럼 가공을 안하려면 쿼리가 복잡해 질 수 밖에 없습니다.
SELECT * FROM tbl_store WHERE ( ( yyyy = DATENAME(yy, DATEADD(m, -3, '20201201')) AND mm = DATENAME(mm, DATEADD(m, -3, '20201201'))) OR ( yyyy = DATENAME(yy, DATEADD(m, -2, '20201201')) AND mm = DATENAME(mm, DATEADD(m, -2, '20201201'))) OR ( yyyy = DATENAME(yy, DATEADD(m, -1, '20201201')) AND mm = DATENAME(mm, DATEADD(m, -1, '20201201'))) OR ( yyyy = DATENAME(yy, DATEADD(m, -0, '20201201')) AND mm = DATENAME(mm, DATEADD(m, -0, '20201201'))) ) ;