PHP | MySQLのBETWEEN演算子で日時データを範囲指定する方法
MySQLのBETWEEN演算子を利用してカラムのデータ型がDATETIMEやTIMESTAMP、DATEなどの日付データで期間を範囲指定する方法とPHPのサンプルコードを紹介しています。
MySQLの日時データで期間を範囲指定する
日付データを範囲指定する方法はいくつもありますが、このページではBETWEEN演算子を使った方法を紹介しています。
// クエリ
$sql = "SELECT * FROM `table_name` WHERE `column_name` BETWEEN 'ここから' AND 'ここまで'";
// クエリを実行
$res = $mysqli->query($sql);
まず、データ型がDATETIMEやTIMESTAMP、DATEの場合、追加や検索する際の日付データは、例えば「2022-09-08」と時間軸を省略すると「2022-09-08 00:00:00」として代入されます。
「2022」とした場合は月日以降の部分には「2022-01-01 00:00:00」が代入されます。
その事を前提に日付データの範囲指定をしていきます。
特定の日付のデータを指定
SQLで特定の日付のデータを指定したい場合、BETWEEN演算子で指定した日付、サンプルでは「2022-09-08」として指定、その翌日の日付「2022-09-09」をAND演算子の後に指定します。
// クエリ
$sql = "SELECT * FROM `table_name` WHERE `column_name` BETWEEN '2022-09-08' AND '2022-09-09'";
// クエリを実行
$res = $mysqli->query($sql);
指定日付午前0時「2022-09-8 00:00:00」から翌日午前0時の「2022-09-09 00:00:00」までの範囲指定しますのでSQLは2022年9月8日のデータのみを取得します。
「2022-09-09 00:00:00」を日付を取得してしまいますが、そんなデータは基本的に皆無だと考えられます。
よって「2022-09-8 00:00:00」と「2022-09-08 23:59:59」などを指定する必要はありません。
特定の月のデータを指定
特定の月を指定する場合も同様に「2022-09」と「2022-10」を指定する事で2022年9月のデータを取得する事が可能です。
処理上では「2022-09-01 00:00:00」から翌月1日午前0時の「2023-10-01 00:00:00」までのデータを指定しています。
// クエリ
$sql = "SELECT * FROM `table_name` WHERE `column_name` BETWEEN '2022-09' AND '2022-10'";
// クエリを実行
$res = $mysqli->query($sql);
特定の年のデータを指定
特定の年のデータを指定する場合も同じになります。
BETWEEN演算子で「2022」と「2023」を指定する事で「2022-01-01 00:00:00」から翌年1月1日午前0時の「2023-01-01 00:00:00」までの期間を指定した場合と同じ処理となります。
// クエリ
$sql = "SELECT * FROM `table_name` WHERE `column_name` BETWEEN '2022' AND '2023'";
// クエリを実行
$res = $mysqli->query($sql);
ディスカッション
コメント一覧
まだ、コメントがありません