SQL分で今月の指定をしたいです。
解決したいこと
テーブルから今月分という指定でデータを取り出したいのですがうまくできません。
また、型が違う的なエラーですが意味が分かりません。
発生している問題・エラー
Uncaught TypeError: odbc_result(): Argument #1 ($statement) must be of type resource, bool given
該当するソースコード
"SELECT SUM(※数量のカラム) FROM ※テーブル WHERE DATE_FORMAT(※日時のカラム, '%Y%m') = DATE_FORMAT(NOW(), '%Y%m') and ※物のカラム = '01' and ※区分1カラム = '01' and ※区分2カラム = '01'";
以下のように指定した場合はできています。
"SELECT SUM(※数量のカラム) FROM ※テーブル WHERE ※物のカラム = '01' and ※日時のカラム = '20230214' and ※区分1カラム = '01' and ※区分2カラム = '01'";
自分で試したこと
トライ&エラーで検索しながらいろいろ書いてみましたが全てダメでした。
型が違う?という事で、そもそも根本的な何かが違う気もしています。
今月分、先月文、去年分など指定して使いたいので、どなたかご教授いただけますと幸いです。
よろしくお願い申し上げます。
※追記
以下のように書いたら一先ず目的の動きをしました。
$AAA = "SELECT SUM(※数量のカラム) FROM ※テーブル WHERE MONTH(※日時のカラム) = '2' AND YEAR(※日時のカラム) ='2023' and ※物のカラム = '01' and ※区分1カラム = '01' and ※区分2カラム = '01'";
$BBB = odbc_exec($conn, $AAA);
print floor(odbc_result($BBB,1));
しかし、毎月入力を変更できないので以下のように変えたらエラーでした。
$AAA = "SELECT SUM(※数量のカラム) FROM ※テーブル WHERE MONTH(※日時のカラム) = MONTH(current_date) AND YEAR(※日時のカラム) =YEAR(current_date) and ※物のカラム = '01' and ※区分1カラム = '01' and ※区分2カラム = '01'";
$BBB = odbc_exec($conn, $AAA);
print floor(odbc_result($BBB,1));
※追記2
リソース型・ブール型がよく分からず苦労しておりましたが、以下のようにして(無理やり?)解決できました。
$year = date("Y");
$month = date('m');
$lastyear = date("Y") - 1;
$lastmonth = date('m') - 1;
$AAA = "SELECT SUM(※数量のカラム) FROM ※テーブル WHERE MONTH(※日時のカラム) = '$month' and YEAR(※日時のカラム) = '$year' and ※物のカラム = '01' and ※区分1カラム = '01' and ※区分2カラム = '01'";
//先月や昨年は$last~の方を使う
$BBB = odbc_exec($conn, $AAA);
print floor(odbc_result($BBB,1));
アドバイスいただきありがとうございました。