MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで有効期限を検証する方法|NOW()関数を使った実践的な手順

MySQLでデータの有効期限を検証したい場合、NOW()関数を使用するのが最も簡単な方法です。NOW()は現在の日時を返すため、保存されている日時カラムと比較することで、まだ有効なレコードだけを抽出できます。

基本構文

有効期限を検証する基本的な構文は以下の通りです。

select * from yourTableName
where yourColumnName > now();

このクエリでは、指定したカラムの値が現在日時より未来であるレコードのみが取得されます。つまり、「まだ期限切れになっていない」データを絞り込むことができます。

実際に試してみよう

1. サンプルテーブルを作成する

まず、医薬品の有効期限を管理するテーブルを作成します。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    expiryDateOfMedicine datetime
    );
Query OK, 0 rows affected (0.55 sec)

ここでは、自動採番される主キー「Id」と、DATETIME型の「expiryDateOfMedicine(医薬品の有効期限)」カラムを定義しています。

2. レコードを挿入する

INSERTコマンドを使って、複数の有効期限データを登録します。

mysql> insert into DemoTable(expiryDateOfMedicine) values('2019-04-27 11:29:00');
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable(expiryDateOfMedicine) values('2019-04-26 10:39:21');
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable(expiryDateOfMedicine) values('2019-04-28 11:30:10');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(expiryDateOfMedicine) values('2019-04-29 12:44:11');
Query OK, 1 row affected (0.18 sec)

3. 登録されたレコードを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable;

実行結果は以下の通りです。

+----+----------------------+
| Id | expiryDateOfMedicine |
+----+----------------------+
| 1  | 2019-04-27 11:29:00  |
| 2  | 2019-04-26 10:39:21  |
| 3  | 2019-04-28 11:30:10  |
| 4  | 2019-04-29 12:44:11  |
+----+----------------------+
4 rows in set (0.00 sec)

有効期限を検証するクエリ

それでは、NOW()関数を使って有効期限内のレコードだけを抽出してみます。仮に現在の日時が「2019-04-28」だとすると、次のようなクエリになります。

mysql> select * from DemoTable
where expiryDateOfMedicine > now();

実行結果:

+----+----------------------+
| Id | expiryDateOfMedicine |
+----+----------------------+
| 3  | 2019-04-28 11:30:10  |
| 4  | 2019-04-29 12:44:11  |
+----+----------------------+
2 rows in set (0.00 sec)

結果の解説

実行結果を見ると、Id 3と4のレコードのみが返されています。これは、これらのレコードの有効期限が現在日時よりも未来であるためです。一方、Id 1と2のレコードはすでに期限切れのため、結果から除外されました。

まとめ

MySQLで有効期限を検証するには、NOW()関数と比較演算子「>」を組み合わせるだけで簡単に実装できます。この手法は、医薬品の在庫管理や会員の有効期間チェック、クーポンの有効期限判定など、さまざまな場面で活用できる実用的なテクニックです。なお、期限切れのレコードを抽出したい場合は、比較演算子を「<」に変更すれば対応できます。

  1. MySQLのSOUNDEX()関数を使って発音が似た文字列を検索する方法

    SOUNDEX()関数とはMySQLのSOUNDEX()関数は、文字列からサウンドex(Soundex)コードと呼ばれる音声表現の文字列を返します。Soundexは、英語の発音の類似性に基づいて文字列をインデックス化するアルゴリズムで、発音がほぼ同じ2つの文字列は、同一のSoundexコードを持つという特徴があります。この特性を活かすことで、スペルは異なるが発音が似ている名前や単語を効率的に検索できます。SOUNDEX()を使用したクエリの基本構文MySQLでSOUNDEX()を使って検索するには、以下のような構文を使用します。SELECT * FROM テーブル名 WHERE SOUNDEX

  2. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」