Data Science/SQL

[프로그래머스 sql] where ~ like는 문자열 타입 비교, date는 다르게

Tashapark 2025. 2. 24. 19:44
728x90

- 왜 틀린 건지 모르겠는데..?

 

수정 전 

SELECT b.TITLE, b.BOARD_ID, r.REPLY_ID, r.WRITER_ID, r.CONTENTS, 
		date_format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
join USED_GOODS_REPLY r using(BOARD_ID)
where r.CREATED_DATE like '2022-10-%'
order by r.CREATED_DATE asc, b.TITLE asc;

 

 

수정 후1
- created_ date 칼럼은 date 타입인데,

where ~ like는 문자열 타입을 비교할 때 쓰는 것이라서 돌아가는 것처럼 보여도 문제가 있음. 

- date_format을 그대로 사용해서 해당하는 값만 출력 

SELECT b.TITLE, b.BOARD_ID, r.REPLY_ID, r.WRITER_ID, r.CONTENTS, 
        date_format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
join USED_GOODS_REPLY r using(BOARD_ID)
where date_format(r.CREATED_DATE, '%Y-%m') = '2022-10' -- 변경
order by r.CREATED_DATE asc, b.TITLE asc;

 

수정 후2

SELECT b.TITLE, b.BOARD_ID, r.REPLY_ID, r.WRITER_ID, r.CONTENTS, 
        date_format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
join USED_GOODS_REPLY r on b.BOARD_ID = r.BOARD_ID -- 타입이 같지만, 혹시나 수정해봄
where r.CREATED_DATE between '2022-10-01' and '2022-10-31' -- 얘도 범위로 수정함
order by r.CREATED_DATE asc, b.TITLE asc;

 

..?

- 왜 여전히 안될까?

 

 

수정 후3

SELECT b.TITLE, b.BOARD_ID, r.REPLY_ID, r.WRITER_ID, r.CONTENTS, 
        date_format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
join USED_GOODS_REPLY r on b.BOARD_ID = r.BOARD_ID
WHERE r.CREATED_DATE BETWEEN '2022-10-01 00:00:00' AND '2022-10-31 23:59:59' -- 시간도 들어간 것으로 변경
order by r.CREATED_DATE asc, b.TITLE asc;

 

- 그래도 틀렸다는데..?

 

.......아오..

게시글 기준.. 날짜 잖아... 댓글 날짜 아니고.

SELECT b.TITLE, b.BOARD_ID, r.REPLY_ID, r.WRITER_ID, r.CONTENTS, 
        date_format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
join USED_GOODS_REPLY r on b.BOARD_ID = r.BOARD_ID
WHERE b.CREATED_DATE LIKE '2022-10%' -- 게시글 기준!. 결국 처음이 맞았네
order by r.CREATED_DATE asc, b.TITLE asc;

 

728x90
반응형