테스트 사이트 - 개발 중인 베타 버전입니다

쿼리가 아무래도 안짜져요 채택완료

smltree 1년 전 조회 2,717

쿼리 질문 드립니다.

시작일 항목과 종료일 항목이 있습니다.

2024-10-01~2024-10-15 이런식입니다.

이 행사들을 월별로 구별하여 나타내고 싶습니다.

쿼리를 아래와 같이 짰습니다.

$y는 년도이고 $m은 월입니다. wr_4는 시작일 항목이고 wr_5는 종료일 항목입니다.

$last_day는 해당 월의 말일입니다.

 

select * from g5_write_program WHERE ('{$y}-{$m}-01'<=wr_4 AND wr_4<='{$last_day}') or ('{$y}-{$m}-01'<=wr_5 AND wr_5<='{$last_day}') order by wr_id desc

이렇게 짜보았습니다.

 

이렇게 짜면 10월에 시작해서 10월에 끝나는 행사는 10월행사 항목에 잘 나오고 10월에 시작해서 11월에 끝나는 행사는 10월행사, 11월행사 항목에 잘 나옵니다.

각 달에 잘 옵니다.

문제는 10월에 시작해서 12월에 끝나는 행사입니다. 10월과 12월에는 이달의 행사에 잘 나오는데 11월에는 안나온다는 것입니다.

 

 

그도 그럴것이 시작일과 종료일만 가지고 해당 월에 해당되는것들만 뽑아와서 그럽니다. 중간에 있는달 (그러니까 숫자상으로는 나오지 않는 달이지요)에는 안나온다는 겁니다.

 

2024-02-15~2024-05-31 행사를

2월,3월,4월,5월이 다 나오게 쿼리를 짜고 싶습니다.

아무리 머리를 써도 잘 안되네요

도움을 부탁드립니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
1년 전

</p>

<p>SELECT * FROM g5_write_program WHERE ( (wr_4 <= '{$y}-{$m}-{$last_day}' AND wr_5 >= '{$y}-{$m}-01') ) ORDER BY wr_id DESC</p>

<p>

 

이렇게 해보시겠어요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

R
1년 전

위처럼 사용하시려면,

해당하는 table 의 컬럼 형식을 char -> datetime 으로 변경하세요.

wr_4는 시작일 varchar -> datetime wr_5는 종료일 varchar -> datetime

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

1년 전

아래의 내용을 한번 참고를 해보시겠어요..

 

 

SELECT DISTINCT * FROM g5_write_program WHERE (     (YEAR(wr_4) = {$y} AND MONTH(wr_4) <= {$m} AND YEAR(wr_5) = {$y} AND MONTH(wr_5) >= {$m})     OR (YEAR(wr_4) = {$y} AND MONTH(wr_4) <= {$m} AND YEAR(wr_5) > {$y})     OR (YEAR(wr_4) < {$y} AND YEAR(wr_5) = {$y} AND MONTH(wr_5) >= {$m})     OR (YEAR(wr_4) < {$y} AND YEAR(wr_5) > {$y})     OR (YEAR(wr_4) = {$y} AND MONTH(wr_4) = {$m})     OR (YEAR(wr_5) = {$y} AND MONTH(wr_5) = {$m}) ) ORDER BY wr_id DESC

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인