안녕하세요. 질문드립니다ㅜ 0 10 154

by 박지 [SQL Query] [2021.07.16 09:48:08]


안녕하세요

abc라는 테이블을 현시점(21.07.16으로부터 1달전(21.06.16까)지의 데이터는 보관를 해야합니다.

그리고 1달전(21.06.16) 이전의 모든 데이터는 삭제하고 싶습니다.

현시점으로부터 1달간 데이터는 보관하고 1달이 지나면 모든데이터는 삭제하고싶은데

감이안와서요 ㅠ

부탁드립니다. 

 

 

 

by 박지 [2021.07.16 09:53:51]

DELETE FROM 테이블명 WHERE REGDATE < ADD_MONTHS(SYSDATE, -1) 

 이렇게 하면 한달이전의 모든데이터가 삭제가 될까요? 


by 랑에1 [2021.07.16 10:36:02]

자정부터 일테니 TRUNC 해주는게 맞을 것 같네요

DELETE FROM 테이블명 WHERE REGDATE < TRUNC(ADD_MONTHS(SYSDATE, -1))

DELETE 하기전에 동일 조건으로 조회후 검증해보세요~

SELECT * FROM 테이블명 WHERE REGDATE < TRUNC(ADD_MONTHS(SYSDATE, -1))


by 박지 [2021.07.16 10:50:28]

그데 혹시 reddate 를 안쓰면 어떻게해야할까용? 


by 랑에1 [2021.07.16 10:59:54]

한달 이전을 정의할 기준이 되는 날짜는 필요하겠지요.

regdate를 안쓴다는게 무슨말씀이실까요?


by 박지 [2021.07.16 11:21:58]

앗...지금 regdate 가 varchar형식으로 들어가져있어서 그런데 

혹시 to date를 쓰면 먹힐까요..? 

 

 


by 랑에1 [2021.07.16 12:07:44]

컬럼을 가공하지 마시고 조건 타입을 컬럼에 맞추세요~

WHERE REGDATE < TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYYMMDD')

 


by 박지 [2021.07.16 14:13:37]

 

안녕하세요 ㅜ 또한번 질문드립니다 죄송합니다 ㅜ 마리아디비사용중인데

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번 반복이요 ㅠㅜ 

                                           

 

 


 


by 박지 [2021.07.16 14:18:51]

select * from 테이블명
where str_to_date(reg_date, '%Y%m%d') < TIMESTAMPADD(MONTH,-1,SYSDATE()); 

 

이렇게 해보니까 되는것같아요 ㅜㅜ !! 

 


by 마농 [2021.07.16 15:08:06]

컬럼을 가공하여 조건에 맞추지 말고
컬럼은 그대로 둔 채 조건을 가공하여 컬럼에 맞추세요.
WHERE reg_date < DATE_FORMAT(CURRENT_DATE + INTERVAL -1 MONTH, '%Y%m%d')


by 박지 [2021.07.16 15:28:50]

감사합니다!!! 도움이 많이 됐습니다 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입