by 박지 [SQL Query] [2021.07.16 09:48:08]
안녕하세요
abc라는 테이블을 현시점(21.07.16으로부터 1달전(21.06.16까)지의 데이터는 보관를 해야합니다.
그리고 1달전(21.06.16) 이전의 모든 데이터는 삭제하고 싶습니다.
현시점으로부터 1달간 데이터는 보관하고 1달이 지나면 모든데이터는 삭제하고싶은데
감이안와서요 ㅠ
부탁드립니다.
DELETE FROM 테이블명 WHERE REGDATE < ADD_MONTHS(SYSDATE, -1)
이렇게 하면 한달이전의 모든데이터가 삭제가 될까요?
자정부터 일테니 TRUNC 해주는게 맞을 것 같네요
DELETE FROM 테이블명 WHERE REGDATE < TRUNC(ADD_MONTHS(SYSDATE, -1))
DELETE 하기전에 동일 조건으로 조회후 검증해보세요~
SELECT * FROM 테이블명 WHERE REGDATE < TRUNC(ADD_MONTHS(SYSDATE, -1))
그데 혹시 reddate 를 안쓰면 어떻게해야할까용?
한달 이전을 정의할 기준이 되는 날짜는 필요하겠지요.
regdate를 안쓴다는게 무슨말씀이실까요?
앗...지금 regdate 가 varchar형식으로 들어가져있어서 그런데
혹시 to date를 쓰면 먹힐까요..?
컬럼을 가공하지 마시고 조건 타입을 컬럼에 맞추세요~
WHERE REGDATE < TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYYMMDD')
안녕하세요 ㅜ 또한번 질문드립니다 죄송합니다 ㅜ 마리아디비사용중인데
select * from 테이블명 where str_to_date(reg_date, '%Y%m%d') < ADD_MONTHS(SYSDATE , -1)
where str_to_date(reg_date, '%Y%m%d') <여기까지는 맞는 문장인것같아요
하지만 ADD_MONTHS 는 마리아디비에서 안먹는데 혹시 어떤것을 쓰는지 알고계시나요?
똑같이 1달에 1번 반복이요 ㅠㅜ
select * from 테이블명 where str_to_date(reg_date, '%Y%m%d') < TIMESTAMPADD(MONTH,-1,SYSDATE());
이렇게 해보니까 되는것같아요 ㅜㅜ !!
컬럼을 가공하여 조건에 맞추지 말고 컬럼은 그대로 둔 채 조건을 가공하여 컬럼에 맞추세요. WHERE reg_date < DATE_FORMAT(CURRENT_DATE + INTERVAL -1 MONTH, '%Y%m%d')
감사합니다!!! 도움이 많이 됐습니다