MySQLで今日から月末までのレコードを抽出・表示する方法
MySQLで今日から月末までのレコードを表示する方法
MySQLで「現在の日付から当月の月末まで」のレコードを抽出したい場合、CURDATE()関数とLAST_DAY()関数をBETWEEN句と組み合わせることで簡単に実現できます。ここでは、サンプルテーブルを使いながら具体的な手順を解説します。
1. サンプルテーブルの作成
まず、デモ用のテーブルを作成しましょう。
mysql> create table DemoTable
(
BookingDate date
);
Query OK, 0 rows affected (0.67 sec)2. レコードの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('2019-09-21');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2018-09-10');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2019-09-10');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-09-08');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2016-09-18');
Query OK, 1 row affected (0.17 sec)3. 全レコードの確認
SELECT文で、テーブル内のすべてのレコードを表示して内容を確認しておきます。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-------------+ | BookingDate | +-------------+ | 2019-09-21 | | 2018-09-10 | | 2019-09-10 | | 2019-09-08 | | 2016-09-18 | +-------------+ 5 rows in set (0.00 sec)
4. 今日から月末までのレコードを抽出するクエリ
現在の日付から当月の月末までのレコードを取得するには、次のようにクエリを記述します。
mysql> select *from DemoTable where BookingDate between curdate() and last_day(curdate());
実行結果は以下のとおりです。
+-------------+ | BookingDate | +-------------+ | 2019-09-21 | | 2019-09-10 | | 2019-09-08 | +-------------+ 3 rows in set (0.01 sec)
クエリのポイント
CURDATE()は現在の日付を返す関数、LAST_DAY()は引数に指定した日付が属する月の最終日を返す関数です。この2つをBETWEENで組み合わせることで、「今日から月末まで」の範囲に含まれるレコードだけを効率よく抽出できます。月ごとの予約データや売上データを集計する際などに、ぜひ活用してみてください。
-
MySQLで特定のレコードを先頭に固定し、残りの行を元の順序のまま表示する方法
MySQLでは、ORDER BY句を工夫して使うことで、特定の条件に一致するレコードを最上位に固定しつつ、それ以外のレコードを元の順序のまま表示できます。この記事では、その具体的な手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.82 sec)2. レコードの挿入次に、INSERTコマンド
-
MySQLで日付データから月の初日と末日を取得する方法
MySQLでは、日付型のカラムから「その月の最初の日」と「最後の日」を簡単に求めることができます。この記事では、実際にテーブルを作成し、サンプルデータを使いながら具体的な手順を解説します。1. テーブルの作成まず、日付を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.73 sec)2. レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql>