MySQLでnow()が2つの特定の日付の間にあるかどうかを確認する方法
MySQLでは、now()(現在の日時)が2つの特定の日付の範囲内に含まれているかどうかを確認したい場面がよくあります。そんなときに便利なのが BETWEEN 演算子です。この記事では、実際にテーブルを作成しながら、その使い方を具体的に解説します。
1. テーブルの作成
まず、開始日(FirstDate)と終了日(SecondDate)を格納するためのテーブルを作成します。
mysql> create table DemoTable
(
FirstDate datetime,
SecondDate datetime
);
Query OK, 0 rows affected (0.60 sec)2. レコードの挿入
次に、INSERT文を使ってサンプルデータを登録します。
mysql> insert into DemoTable values('2019-04-01','2019-05-02');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('2019-05-28','2019-06-04');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable values('2016-01-31','2019-03-01');
Query OK, 1 row affected (0.15 sec)3. テーブル内の全レコードを確認
SELECT文で、登録したすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+---------------------+---------------------+ | FirstDate | SecondDate | +---------------------+---------------------+ | 2019-04-01 00:00:00 | 2019-05-02 00:00:00 | | 2019-05-28 00:00:00 | 2019-06-04 00:00:00 | | 2016-01-31 00:00:00 | 2019-03-01 00:00:00 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
4. now()が2つの日付の間にあるかを確認するクエリ
ここで本題です。以下のクエリを実行すると、now()(現在日時)が FirstDate と SecondDate の間に含まれるレコードだけを抽出できます。
mysql> select *from DemoTable where now() BETWEEN FirstDate AND SecondDate;
出力結果
+---------------------+---------------------+ | FirstDate | SecondDate | +---------------------+---------------------+ | 2019-05-28 00:00:00 | 2019-06-04 00:00:00 | +---------------------+---------------------+ 1 row in set (0.00 sec)
解説
実行時点の現在日時が「2019-05-28」から「2019-06-04」の範囲内であったため、該当する1件のレコードのみが返されました。このように BETWEEN を使えば、現在日時が指定した期間内に含まれているかどうかをシンプルに判定できます。
なお、BETWEEN は両端の値を含む(以上・以下の条件)ため、境界の日時そのものもマッチ対象になる点に注意してください。また、datetime型のカラムと比較する場合、時刻まで含めて比較されるため、日付だけを比較したい場合は DATE(now()) を使うなどの工夫も有効です。
-
MySQLで条件を指定して日付の期間(間・前・後)を抽出する方法
MySQLでは、WHERE句にAND条件とOR条件を組み合わせることで、「ある日付より前」かつ「別のある日付より後、またはNULL」といった複雑な条件付きの日付抽出が可能になります。退職日(relieving_date)が未設定のレコードも含めて抽出したい場合などに特に便利です。 基本の構文 条件付きで日付を選択する場合の基本的な構文は以下の通りです。 SELECT * FROM テーブル名 WHERE カラム名1 < 値1 AND (カラム名2 > 値2 OR カラム名2 IS NULL); この構文のポイントは、OR条件部分を括弧()で囲むことです。これにより、AND条件との優
-
MySQLのバージョンを確認する方法をわかりやすく解説
この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ