채택완료

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

2019-12-27 (금) 16:07:23 3,153

안녕하세요.

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

거의 해결 되어 가는데

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

도움 좀 부탁 드릴게요.

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

Copy
$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);

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

Copy
// 지난달 

$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개 / 댓글 9개

채택된 답변
+20 포인트
2019-12-27 (금) 16:53:00

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

Copy
$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);

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

Copy
$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);

하면 안되는건가요?

답변에 대한 댓글 5개

2019-12-27 (금) 17:36:22
답변 감사드립니다~!

작성해주신대로
$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

위와 같은 에러메시지가 나옵니다.
위에 줄에 sql_common 에 between 을 빼고 ..
아래쪽에는 sql_common like 를 넣어줘야죠

그리고 수정할건 좀 있기는 하네요

Y-m-d => Y-m 으로도 바꿔야 하구요
위에서 부터 정확히 붙여넣으세요 ㅋㅋ
[code]
$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);

[/code]
2019-12-27 (금) 17:55:28
@백수1995 님 감사합니다.

$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 />";

말씀하신대로 처리하니 잘 나오는 것 같습니다.
감사합니다!
아.. 제꺼 채택안해주셔되 되는데..
저밑에 @KAIKAI 님꺼 해주시지 ㅠ.ㅠ
Copy
$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);

답변에 대한 댓글 1개

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

새해 복많이 받으세요!!

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

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

Copy
$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 이 누락된듯 보여집니다.

답변에 대한 댓글 1개

2019-12-27 (금) 18:05:13
댓글 감사합니다.
제가 php 를 몰라서 컨트롤 씨 컨트롤 브이 하다보니 ㅠ_ㅠ 주신 문장을 이해한다기 보다 그냥 붙여서 썼습니다.

새해 복많이 받으세요~

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

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

전월의 데이타는

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

로 해보세요

답변에 대한 댓글 1개

2019-12-27 (금) 17:42:27
답변 주셔서 감사드립니다.

말씀하신 대로 적용해 보았습니다만
$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) 라고 에러가 나옵니다.
Copy
$last_month_s = date("Y-m",strtotime('-1 month'));

"SELECT * FROM `g5_write_notice` WHERE `wr_datetime` LIKE '".$last_month_s."%'";

형태로 변수를 대입해서 추출해보세요

답변에 대한 댓글 1개

2019-12-27 (금) 16:34:15
답변 감사합니다.
위 링크는 이미 구글에서 검색해서 보았으나 제가 원하는 결과가 나오진 않습니다. ㅠ_ㅠ

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

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

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

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