MySQLでTIME型の値から秒を省いて表示する方法
MySQLのTIME型カラムには「09:30:35」のように秒まで格納されていますが、画面表示などでは「9:30」のように時と分だけを扱いたいケースがよくあります。そのような場合は、DATE_FORMAT()関数を使うことで、秒を省いた形式に整形できます。
DATE_FORMAT()の基本構文
SELECT DATE_FORMAT(yourColumnName,'%k:%i') as anyAliasName FROM yourTableName;
フォーマット指定子として「%H:%i」を使っても同じ結果が得られます。「%k」は先頭のゼロなしの時(0〜23)、「%H」は先頭にゼロを付けた時(00〜23)、「%i」は分(00〜59)を表します。
サンプルテーブルの作成
実際に動きを確認するため、まずテーブルを作成しましょう。テーブル作成のクエリは以下の通りです。
mysql> create table TimeDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> LastLoginTime time
-> );
Query OK, 0 rows affected (0.56 sec)
レコードの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into TimeDemo(LastLoginTime) values('09:30:35');
Query OK, 1 row affected (0.20 sec)
mysql> insert into TimeDemo(LastLoginTime) values('10:45:30');
Query OK, 1 row affected (0.19 sec)
mysql> insert into TimeDemo(LastLoginTime) values('13:33:58');
Query OK, 1 row affected (0.24 sec)
mysql> insert into TimeDemo(LastLoginTime) values('15:45:31');
Query OK, 1 row affected (0.21 sec)
mysql> insert into TimeDemo(LastLoginTime) values('16:40:36');
Query OK, 1 row affected (0.17 sec)登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from TimeDemo;
実行結果は以下の通りです。
+----+---------------+
| Id | LastLoginTime |
+----+---------------+
| 1 | 09:30:35 |
| 2 | 10:45:30 |
| 3 | 13:33:58 |
| 4 | 15:45:31 |
| 5 | 16:40:36 |
+----+---------------+
5 rows in set (0.00 sec)
このように、TIME型カラムには秒まで含まれた値が格納されていることがわかります。
秒を省いた形式で取得する
ここで本題です。秒を除いて時刻を取得するクエリは以下のようになります。
mysql> select DATE_FORMAT(LastLoginTime,'%k:%i') as `Time` from TimeDemo;
実行結果は以下の通りです。
+-------+
| Time |
+-------+
| 9:30 |
| 10:45 |
| 13:33 |
| 15:45 |
| 16:40 |
+-------+
5 rows in set (0.00 sec)
「%k:%i」を指定した場合、午前9時台は「9:30」と先頭のゼロが省略されて表示されます。
先頭にゼロを付けて表示する(%H:%i)
先頭のゼロを残したい場合は、フォーマット指定子を「%H:%i」に変更するだけで同じように秒なしの時刻を取得できます。
mysql> select DATE_FORMAT(LastLoginTime,' %H:%i') as `Time` from TimeDemo;
実行結果は以下の通りです。
+--------+
| Time |
+--------+
| 09:30 |
| 10:45 |
| 13:33 |
| 15:45 |
| 16:40 |
+--------+
5 rows in set (0.00 sec)
まとめ
MySQLのTIME型から秒を省いて表示したい場合は、DATE_FORMAT()関数を使うのが最も簡単な方法です。用途に応じて「%k:%i」(ゼロなし)と「%H:%i」(ゼロあり)を使い分けることで、柔軟に時刻の表示形式を制御できます。なお、DATE_FORMAT()の戻り値は文字列になるため、並べ替えや計算に使う場合は注意が必要です。
-
mysqldumpを使わずにMySQLデータベースを複製する方法
MySQLデータベースを複製する場合、通常はmysqldumpコマンドが使われますが、SQL文だけでテーブルを別のデータベースへコピーすることも可能です。ここでは、CREATE TABLE ... SELECT構文を使った複製方法を解説します。複製に使う基本構文あるデータベースのテーブルを、別のデータベースにそのままコピーしたい場合は、以下の構文を使用します。create table データベース名1.テーブル名1 select * from データベース名2.テーブル名2;この構文では、元のテーブル(データベース名2.テーブル名2)の全データとカラム定義をもとに、新しいテーブル(データベース
-
MySQLクエリでLIKE句を2回使う方法|OR条件で複数パターンを検索する
MySQLでは、LIKE句を1つのクエリ内で2回以上使用することで、複数のパターンに一致するレコードを柔軟に抽出できます。この記事では、実際にテーブルを作成し、LIKE句を2回組み合わせた検索クエリの書き方を手順を追って解説します。 1. サンプルテーブルを作成する まず、検索対象となるテーブルを作成します。 mysql> create table DemoTable2009 ( Name varchar(20) ); Query OK, 0 rows affected (0.51 sec) 2. テーブルにレコードを挿入する INSERT文を使って、いくつかの名前データを登録し