MySQLでテーブルのタイムスタンプ(TIMESTAMP)フィールドを更新する方法
MySQLテーブルのタイムスタンプフィールドを更新する手順
MySQLでは、UPDATE文とNOW()関数を組み合わせることで、TIMESTAMP型のフィールドを簡単に現在の日時へ更新できます。ここでは、具体的なサンプルを使って手順を解説します。
1. テーブルを作成する
まず、タイムスタンプ型のカラムを持つテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> PunchOut timestamp,
-> PunchStatus tinyint(1)
-> );
Query OK, 0 rows affected (0.51 sec)この例では、出勤・退勤時刻を記録する「PunchOut」(timestamp型)と、ステータスを示す「PunchStatus」(tinyint型)の2つのカラムを用意しています。
2. レコードを挿入する
INSERTコマンドを使って、テーブルに複数のレコードを追加します。
mysql> insert into DemoTable values('2019-01-31 6:30:10',1);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-02-06 4:10:13',0);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2018-12-16 03:00:30',0);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2016-11-25 02:10:00',1);
Query OK, 1 row affected (0.22 sec)3. テーブルの内容を確認する
SELECT文を実行して、挿入した全レコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+---------------------+-------------+ | PunchOut | PunchStatus | +---------------------+-------------+ | 2019-01-31 06:30:10 | 1 | | 2019-02-06 04:10:13 | 0 | | 2018-12-16 03:00:30 | 0 | | 2016-11-25 02:10:00 | 1 | +---------------------+-------------+ 4 rows in set (0.00 sec)
4. タイムスタンプフィールドを更新する
次に、MySQLテーブルのタイムスタンプフィールドを更新するクエリを見ていきます。ここでは、「PunchStatus」が0のレコードに絞り込み、その「PunchOut」フィールドに現在の日時を設定しています。
注意: 現在の日時は 2019-06-30 13:43:45 とします。
mysql> update DemoTable set PunchOut=now() where PunchStatus=0; Query OK, 2 rows affected (0.19 sec) Rows matched: 2 Changed: 2 Warnings: 0
ポイントは、NOW()関数を使うことで現在の日時を動的に取得できる点です。また、WHERE句で条件を指定することで、特定のレコードだけを選んで更新できます。
5. 更新後のテーブルを再確認する
もう一度テーブルのレコードを確認し、更新が正しく反映されているかチェックしましょう。
mysql> select *from DemoTable;
出力結果
+---------------------+-------------+ | PunchOut | PunchStatus | +---------------------+-------------+ | 2019-01-31 06:30:10 | 1 | | 2019-06-30 13:43:45 | 0 | | 2019-06-30 13:43:45 | 0 | | 2016-11-25 02:10:00 | 1 | +---------------------+-------------+ 4 rows in set (0.00 sec)
まとめ
上記の出力結果から、「PunchStatus」が0だった2件のレコードのタイムスタンプが、実行時点の日時である「2019-06-30 13:43:45」に更新されたことが確認できます。このように、UPDATE文にNOW()関数とWHERE句を組み合わせれば、条件に合致するレコードのTIMESTAMPフィールドを効率的に現在日時へ更新できます。勤怠管理システムなどで、未処理レコードの打刻時刻を一括でリセットしたい場合などに活用できる便利なテクニックです。
-
JavaのPreparedStatementを使ってMySQLテーブルを更新する方法
JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a
-
MySQLでTIMESTAMP型のカラムを持つテーブルを作成する方法
MySQLでは、TIMESTAMPキーワードを使用することで、日時を自動的に記録するカラムを持つテーブルを簡単に作成できます。TIMESTAMP型に「DEFAULT CURRENT_TIMESTAMP」を指定すると、レコード挿入時の現在日時が自動的に設定されるため、作成日時や更新日時の管理に非常に便利です。1. TIMESTAMPカラムを持つテーブルを作成するまず、CREATE TABLE文でTIMESTAMP型のカラムを含むテーブルを作成します。mysql> create table demo50 -> ( -> id int not null auto_increment