MySQLでDATE_ADD()を使わずにNOW()関数へ6時間を追加する方法
MySQLでは、DATE_ADD()関数を使用しなくても、INTERVAL演算子を組み合わせることで、日時データに簡単に時間を加算できます。この記事では、実際にテーブルを作成し、NOW()関数で取得した現在時刻に6時間を追加する手順を解説します。
1. テーブルの作成
まず、datetime型のカラムを持つテーブルを作成します。以下がテーブル作成用のクエリです。
mysql> create table Add6Hour -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ArrivalTime datetime -> ); Query OK, 0 rows affected (0.56 sec)
このテーブルには、自動採番される「Id」カラムと、到着時刻を格納する「ArrivalTime」カラム(datetime型)が定義されています。
2. レコードの挿入
次に、INSERTコマンドを使ってレコードを挿入します。ここでは、NOW()関数で現在の日時を取得して登録します。
mysql> insert into Add6Hour(ArrivalTime) values(now()); Query OK, 1 row affected (0.12 sec)
3. 登録データの確認
SELECT文を使って、テーブル内のすべてのレコードを表示します。
mysql> select *from Add6Hour;
実行結果は以下のとおりです。
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-14 18:35:24 | +----+---------------------+ 1 row in set (0.00 sec)
4. NOW()の値に6時間を追加する
DATE_ADD()関数を使わない場合、+ INTERVAL 6 HOURという記述だけで時間の加算が可能です。以下のクエリを実行してみましょう。
mysql> select Id,ArrivalTime,( ArrivalTime+ INTERVAL 6 HOUR) AS AfterAdding6HourINNOW from Add6Hour;
実行結果は次のようになります。
+----+---------------------+-----------------------+ | Id | ArrivalTime | AfterAdding6HourINNOW | +----+---------------------+-----------------------+ | 1 | 2019-02-14 18:35:24 | 2019-02-15 00:35:24 | +----+---------------------+-----------------------+ 1 row in set (0.00 sec)
解説
元の時刻は「2019-02-14 18:35:24」ですが、6時間を加算した結果は「2019-02-15 00:35:24」となっています。加算によって日付が翌日にまたいでも、MySQLが自動的に正しく処理してくれる点がポイントです。
なお、INTERVAL演算子は「HOUR」以外にも、「DAY」「MONTH」「YEAR」「MINUTE」などさまざまな単位に対応しており、柔軟な日時計算が行えます。DATE_ADD(ArrivalTime, INTERVAL 6 HOUR)と書く代わりにArrivalTime + INTERVAL 6 HOURと記述できるため、より簡潔にSQLを書きたい場合に便利な方法です。
-
MySQLで日付の妥当性を検証するカスタム関数の作成方法
MySQLでは、標準機能だけでも STR_TO_DATE() や DATE() を組み合わせて日付の妥当性をある程度判定できますが、判定処理を何度も使い回したい場合には、カスタム関数(ストアドファンクション)としてまとめておくと便利です。ここでは、渡された文字列が有効な日付かどうかを判定し、結果を 1(有効)または 0(無効)で返す関数を作成する手順を解説します。1. 事前準備:log_bin_trust_function_creators の設定バイナリログが有効な環境でストアドファンクションを作成する場合、事前にシステム変数 log_bin_trust_function_creators
-
Javaを使用してMySQLテーブルの値を表示する方法
MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87 -> ( -> name varchar(20), -> age int -> )