MySQLで当月・当年の初めからのバウチャー値の合計を集計する方法
MySQLで「今月の初めから」や「今年の初めから」の期間に含まれるデータを対象に、バウチャー値(VoucherValue)の合計を求めたい場合には、MONTH() 関数と YEAR() 関数を組み合わせて使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、具体的なSQLクエリの書き方を順番に解説していきます。
1. サンプルテーブルの作成
まずは、バウチャー値とチャージ日付を格納するテーブルを作成しましょう。
mysql> create table DemoTable1562 -> ( -> VoucherValue int, -> RechargeDate date -> ); Query OK, 0 rows affected (1.40 sec)
2. テストデータの挿入
次に、INSERT文を使っていくつかのレコードを登録します。ここでは、2019年10月と2018年10月の日付が混在したデータを用意しています。
mysql> insert into DemoTable1562 values(149,'2019-10-21'); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable1562 values(199,'2019-10-13'); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable1562 values(399,'2018-10-13'); Query OK, 1 row affected (0.25 sec) mysql> insert into DemoTable1562 values(450,'2019-10-13'); Query OK, 1 row affected (0.20 sec)
3. 登録データの確認
SELECT文で全レコードを表示して、正しく登録されているか確認します。
mysql> select * from DemoTable1562;
実行結果は以下の通りです。
+--------------+--------------+ | VoucherValue | RechargeDate | +--------------+--------------+ | 149 | 2019-10-21 | | 199 | 2019-10-13 | | 399 | 2018-10-13 | | 450 | 2019-10-13 | +--------------+--------------+ 4 rows in set (0.00 sec)
4. 現在日付の確認
CURDATE() 関数で現在の日付を確認しておきます。
mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-10-13 | +------------+ 1 row in set (0.00 sec)
5. 当月の初めからのバウチャー値合計を求めるクエリ
ここが本題です。SUM() 関数と WHERE 句を組み合わせて、「月が現在の月と一致」かつ「年が現在の年と一致」という条件を指定します。
mysql> select sum(VoucherValue) from DemoTable1562 -> where month(RechargeDate)=month(curdate()) -> and year(RechargeDate)=year(curdate());
このクエリを実行すると、以下のような結果が得られます。
+-------------------+ | sum(VoucherValue) | +-------------------+ | 798 | +-------------------+ 1 row in set (0.00 sec)
結果のポイント
出力された合計値は 798 です。これは、149 + 199 + 450 の3件分です。2018年10月13日のレコード(399)は「月」は同じ10月ですが「年」が異なるため、YEAR() 関数による条件によって除外されています。
まとめ
このように、MONTH() と YEAR() を CURDATE() と比較することで、「今月かつ今年」のデータだけを簡単に抽出できます。売上集計やチャージ履歴の月次レポートなど、実務でもよく使われるパターンなので、ぜひ覚えておきましょう。
-
PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法
date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your
-
【初心者向け】MySQLオプションの基本!値の指定方法と「=」記号のルールを解説
本記事では、MySQLにおけるオプションのデフォルト動作、値を必要とするオプション、そして「=」(イコール)記号の扱いについて詳しく解説します。 値を指定するオプションの基本的な書き方 慣例として、値を設定する形式のロングオプションは「=」記号を使って記述します。以下のように書くのが一般的です。 mysql --host=tonfisk --user=jon 一方、値が必須となるオプション(デフォルト値を持たないオプション)については、「=」記号は必須ではありません。つまり、スペース区切りで次のように書いても正しく動作します。 mysql --host tonfisk --user jon