한달전 혹은 지난 달 검색 쿼리문 도와주세요~

한달전 혹은 지난 달 검색 쿼리문 도와주세요~

QA

한달전 혹은 지난 달 검색 쿼리문 도와주세요~

본문

안녕하세요.

 

게시물의 오늘 갯수, 어제 갯수, 이번달 갯수 등을 표시하기 위해서 하루를 다 바치고 있습니다 ㅠ_ㅠ

 

거의 해결 되어 가는데

지난 달 갯수를 구하기 어렵습니다.

도움 좀 부탁 드릴게요.

 

이번달 게시물의 갯수는 아래처럼 했습니다.

 


$bo_table = 'cost'; // 게시판 id
$sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime between ";
 
 // 이번달
 $sql = "$sql_common '" . date("Y-m-01") . "' and '" . date("Y-m-d",strtotime("last day of this month")) . " 23:59:59'";
 $result = sql_fetch($sql);

 

지난 달은 어떻게 하면 알 수 있을까요?

 


 // 지난달 
$sql = "$sql_common '" . date("Y-m-d",strtotime("-1 month")) . "' and '" . date("Y-m-d",strtotime("last day of -1 month")) . " 23:59:59'";

 

위처럼 했더니 숫자가 나오긴 하는데 실제 갯수와 틀리게 나옵니다.

 

 

이 질문에 댓글 쓰기 :

답변 6

지난달은 between 으로 하지 말고 like 로 검색하시면 안되나요?

 



$bo_table = 'cost'; // 게시판 id
$sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime ";
 
 // 이번달
 $sql = "$sql_common between '" . date("Y-m-01") . "' and '" . date("Y-m-d",strtotime("last day of this month")) . " 23:59:59'";
 $result_curr = sql_fetch($sql);

// 지난달 
$sql = "$sql_common like '" . date("Y-m-d",strtotime("-1 month")) . "%'";
$result_prev = sql_fetch($sql);


 

쓰고보니 이번달도 날짜 지정이 아니라면 

 


$bo_table = 'cost'; // 게시판 id $sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime like ";
 
// 이번달
$sql = "$sql_common '" . date("Y-m-01") . "%'";
$result_curr = sql_fetch($sql);

// 지난달 
$sql = "$sql_common '" . date("Y-m-d",strtotime("-1 month")) . "%'";
$result_prev = sql_fetch($sql);


하면 안되는건가요?

답변 감사드립니다~!

작성해주신대로
$sql = "$sql_common '" . date("Y-m-d",strtotime("-1 month")) . "'%";
$result_prev = sql_fetch($sql);
 echo "이전달 DB :".$$result_prev['cnt']."개<br />";

이렇게 해봤는데

elect count(wr_id) as cnt from g4_write_cost where wr_datetime between '2019-11-27'%

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

위와 같은 에러메시지가 나옵니다.

위에서 부터 정확히 붙여넣으세요 ㅋㅋ


$bo_table = 'cost'; 
// 게시판 id 
$sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime like ";
 
// 이번달
$sql = "$sql_common '" . date("Y-m") . "%'";
$result_curr = sql_fetch($sql);

// 지난달 
$sql = "$sql_common '" . date("Y-m",strtotime("-1 month")) . "%'";
$result_prev = sql_fetch($sql);

님 감사합니다.

$bo_table = 'cost'; // 게시판 id
$sql_common3 =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime like ";
 
// 이번달
$sql = "$sql_common3 '" . date("Y-m-01") . "%'";
$result_curr = sql_fetch($sql);
echo "이번달 DB :".  $result_curr['cnt']."개<br />";

// 지난달
$sql = "$sql_common3 '" . date("Y-m-d",strtotime("-1 month")) . "%'";
$result_prev = sql_fetch($sql);
echo "이번달 DB :".  $result_prev['cnt']."개<br />";


이렇게 해보니 숫자가 나오긴 하는데 확 줄어서 나옵니다.

이전달은

$bo_table = 'cost'; // 게시판 id
$sql_common2 =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_is_comment = 0 and  wr_datetime ";
 

// 지난달
$sql = "$sql_common2 like '" . date("Y-m",strtotime("-1 month")) . "%'";
$result_prev = sql_fetch($sql);
echo "이전달 DB :". $result_prev['cnt']."개<br />";

말씀하신대로 처리하니 잘 나오는 것 같습니다.
감사합니다!


$bo_table = 'cost'; // 게시판 id
$sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime LIKE ";
// 이번달
$sql = "$sql_common '" . date("Y-m") . "%' ";
$result = sql_fetch($sql);
// 지난달
$sql = "$sql_common '" . date("Y-m",strtotime('-1 month')) . "%' ";
$result = sql_fetch($sql);
 

답변주셔서 감사합니다!!!!
말씀하신대로 똑같이 적용했는데 잘 나옵니다.
답변이 너무 많이 달려서 위에서부터 적용하다보니 ㅠㅠ 채택은 못해드렸지만
정말 감사합니다.

새해 복많이 받으세요!!

https://mo-world.tistory.com/entry/mysql-%ED%95%9C%EB%8B%AC%EC%A0%84-%ED%95%98%EB%A3%A8%EC%A0%84-%ED%95%9C%EC%8B%9C%EA%B0%84%EC%A0%84

 

여기 보시면 바로 아하... 하실듯 합니다.

답변 감사합니다.
위 링크는 이미 구글에서 검색해서 보았으나 제가 원하는 결과가 나오진 않습니다. ㅠ_ㅠ

제가 원한 한달 전 데이터는 (오늘이 12월 27일 이므로)
11월 1일 부터 11월 30일까지를 말하는 것인데

위 링크에 나온 것을 이용하면 오늘 부터 한달 전까지(12월 27일~ 11월 27일)의 데이터를 뽑을 수 있습니다.

전혀 다른 결과가 나옵니다.

원하시는건 한달전의 데이타가 아니라.

전월의 데이타를 원하시는것이군요

 

전월의 데이타는

WHERE wr_datetime BETWEEN LAST_DAY(NOW() - interval 2 month) + interval 1 DAY
AND LAST_DAY(NOW() - interval 1 MONTH)

로 해보세요

 

답변 주셔서 감사드립니다.

말씀하신 대로 적용해 보았습니다만
$sql = "$sql_common '" . LAST_DAY(NOW() - interval 2 month) + interval 1 DAY AND LAST_DAY(NOW() - interval 1 MONTH)";
$result = sql_fetch($sql);

Parse error: syntax error, unexpected '2' (T_LNUMBER) 라고 에러가 나옵니다.

$sql_common 에는 어떤게 들어가나요?

제가 드린문장을 이해하고 사용하신게 맞는지요?
 



$bo_table = 'cost'; // 게시판 id
$sql_common =" select count(wr_id) as cnt from $g4[write_prefix]$bo_table  where wr_datetime ";
 
 // 이번달
 $sql = "$sql_common BETWEEN LAST_DAY(NOW() - interval 2 month) + interval 1 DAY
AND LAST_DAY(NOW() - interval 1 MONTH) ";


;
 $result_curr = sql_fetch($sql);

 

로 확인해보세요

 

아무래도  between 이 누락된듯 보여집니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 129,678 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT