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文を検討してください。
-
Pythonで変数を宣言する方法とは?型指定不要の仕組みを徹底解説
Pythonでは、変数を宣言するときに特定のデータ型を指定する必要はありません。実は、Pythonには変数を宣言するためのコマンド自体が存在しません。変数は、値が代入された時点で初めて作成されます。そして、代入した値によって、その変数のデータ型が自動的に決定されるのです。そのため、Pythonでの変数宣言は非常にシンプルです。手順は以下の3つだけです。変数に名前をつける必要な値を代入するデータ型は代入された値から自動的に判定されるため、明示的に定義する必要はない整数(int)型変数の宣言整数型の変数を宣言するには、以下のようにします。変数に名前をつける整数値を代入する例x=2 print(x)
-
Pythonで変数は宣言不要?動的型付けの仕組みとtype()関数の使い方を解説
結論から言うと、Pythonでは変数を事前に宣言する必要はありません。使いたいタイミングで、いきなり値を代入して変数を使い始めることができます。 以下では、なぜ宣言が不要なのか、その背景にある仕組みを詳しく解説します。 静的型付け言語では変数の宣言が必須 C、C++、Java、C#といった静的型付け言語では、プログラム内で変数を使用する前に、その名前とデータ型を明示的に宣言しなければなりません。コンパイラがこの宣言をチェックし、変数に適切なデータが格納されていることを保証します。 例えばC言語で、整数値を格納するための変数を作りたい場合は、次のように宣言します。 int x; 宣言の後は、この