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

MySQLで日時(DATETIME)変数を宣言する方法

MySQLで日時(DATETIME)の値を扱う変数を宣言したい場合は、SETコマンドを使ってユーザー定義変数を作成します。ユーザー定義変数は変数名の先頭に「@」を付け、セッション単位で値を保持できるのが特徴です。

日時変数を宣言する基本構文

SET @anyVariableName='yourdatetimeValue';

このように、SETコマンドの後に「@変数名 = '日時の値'」という形式で記述するだけで、日時型の値を持つ変数を簡単に宣言できます。文字列として代入された値は、比較演算などでdatetime型として自動的に評価されます。

動作確認用テーブルの作成

実際に変数の使い方を確認するため、まずはサンプルとなるテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table datetimeVariables
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(10),
   -> ArrivalDatetime datetime,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.78 sec)

Id・Name・ArrivalDatetime(到着日時)の3つのカラムを持つテーブルが作成できました。

テストデータの挿入

次に、INSERTコマンドを使ってレコードをいくつか登録します。

mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('John','2011-01-31 13:45:20');
Query OK, 1 row affected (0.53 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Sam','2012-04-25 15:30:25');
Query OK, 1 row affected (0.18 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Larry','2013-10-04 16:40:30');
Query OK, 1 row affected (0.10 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Bob','2014-05-15 10:30:25');
Query OK, 1 row affected (0.33 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('Mike','2017-08-13 11:30:25');
Query OK, 1 row affected (0.08 sec)
mysql> insert into datetimeVariables(Name,ArrivalDatetime) values('David','2018-04-25 09:30:25');
Query OK, 1 row affected (0.20 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認します。

mysql> select *from datetimeVariables;

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

+----+-------+---------------------+
| Id | Name  | ArrivalDatetime     |
+----+-------+---------------------+
|  1 | John  | 2011-01-31 13:45:20 |
|  2 | Sam   | 2012-04-25 15:30:25 |
|  3 | Larry | 2013-10-04 16:40:30 |
|  4 | Bob   | 2014-05-15 10:30:25 |
|  5 | Mike  | 2017-08-13 11:30:25 |
|  6 | David | 2018-04-25 09:30:25 |
+----+-------+---------------------+
6 rows in set (0.00 sec)

SETコマンドで日時変数を宣言する

それでは本題の、SETコマンドを使った日時変数の宣言です。ここでは「2012年4月25日以降」という基準日時を変数に格納してみます。

mysql> set @greaterThan2011Datetime='2012-04-25 15:30:25';
Query OK, 0 rows affected (0.00 sec)

これで「@greaterThan2011Datetime」という名前の変数に、指定した日時の値が代入されました。

宣言した変数をSELECT文で使う

宣言した変数は、通常のカラムと同じようにWHERE句などの条件式で利用できます。以下のように、変数より大きい日時のレコードだけを抽出してみましょう。

mysql> select *from datetimeVariables
   -> where ArrivalDatetime >= @greaterThan2011Datetime;

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

+----+-------+---------------------+
| Id | Name  | ArrivalDatetime     |
+----+-------+---------------------+
|  2 | Sam   | 2012-04-25 15:30:25 |
|  3 | Larry | 2013-10-04 16:40:30 |
|  4 | Bob   | 2014-05-15 10:30:25 |
|  5 | Mike  | 2017-08-13 11:30:25 |
|  6 | David | 2018-04-25 09:30:25 |
+----+-------+---------------------+
5 rows in set (0.00 sec)

変数に格納した「2012-04-25 15:30:25」以降の日時を持つ5件のレコードのみが抽出されました。Johnのレコード(2011年)だけが除外されていることがわかります。

まとめ

MySQLで日時変数を宣言するには、SETコマンドと「@」プレフィックス付きのユーザー定義変数を使います。宣言した変数はセッション内であれば何度でも再利用でき、WHERE句での条件指定や複雑なクエリの可読性向上に役立ちます。なお、ユーザー定義変数は接続(セッション)が切れると消えるため、永続的に保存したい場合は通常のテーブルやストアドプロシージャ内のDECLARE文を検討してください。

  1. Pythonで変数を宣言する方法とは?型指定不要の仕組みを徹底解説

    Pythonでは、変数を宣言するときに特定のデータ型を指定する必要はありません。実は、Pythonには変数を宣言するためのコマンド自体が存在しません。変数は、値が代入された時点で初めて作成されます。そして、代入した値によって、その変数のデータ型が自動的に決定されるのです。そのため、Pythonでの変数宣言は非常にシンプルです。手順は以下の3つだけです。変数に名前をつける必要な値を代入するデータ型は代入された値から自動的に判定されるため、明示的に定義する必要はない整数(int)型変数の宣言整数型の変数を宣言するには、以下のようにします。変数に名前をつける整数値を代入する例x=2 print(x)

  2. Pythonで変数は宣言不要?動的型付けの仕組みとtype()関数の使い方を解説

    結論から言うと、Pythonでは変数を事前に宣言する必要はありません。使いたいタイミングで、いきなり値を代入して変数を使い始めることができます。 以下では、なぜ宣言が不要なのか、その背景にある仕組みを詳しく解説します。 静的型付け言語では変数の宣言が必須 C、C++、Java、C#といった静的型付け言語では、プログラム内で変数を使用する前に、その名前とデータ型を明示的に宣言しなければなりません。コンパイラがこの宣言をチェックし、変数に適切なデータが格納されていることを保証します。 例えばC言語で、整数値を格納するための変数を作りたい場合は、次のように宣言します。 int x; 宣言の後は、この