MySQLのTIME_FORMAT()関数で時刻値をフォーマットする方法
TIME_FORMAT()関数とは
MySQLのTIME_FORMAT()関数は、DATE_FORMAT()関数とよく似た使い方ができる関数ですが、フォーマットできるのは時刻値のみという点が異なります。もし日付値に対してTIME_FORMAT()関数を使用すると、MySQLはエラーではなくNULLを返すので注意が必要です。
時刻形式の指定子を使った例
時刻に関連する書式指定子(%h、%i、%s、%pなど)を引数として渡すと、日時データから時刻部分だけが抽出され、指定した形式に整形されます。
mysql> Select TIME_FORMAT("2017-10-22 13:03:45", "%h %i %s %p") AS 'OFFLOADED TIME';
+----------------+
| OFFLOADED TIME |
+----------------+
| 01 03 45 PM |
+----------------+
1 row in set (0.00 sec)この例では、「2017-10-22 13:03:45」という日時から「01 03 45 PM」(午後1時3分45秒)という12時間表記の時刻が取得できています。
主な時刻用の書式指定子
- %H … 時(24時間表記、00〜23)
- %h … 時(12時間表記、01〜12)
- %i … 分(00〜59)
- %s / %S … 秒(00〜59)
- %f … マイクロ秒(000000〜999999)
- %p … 午前/午後(AM または PM)
- %r … hh:mm:ss AM/PM 形式の時刻全体
- %T … hh:mm:ss 形式の24時間表記の時刻全体
日付形式の指定子を渡すとNULLが返る
一方、日付に関連する書式指定子(%Y、%M、%Dなど)をTIME_FORMAT()関数に渡すと、MySQLはNULLを返します。
mysql> Select TIME_FORMAT("2017-10-22 13:03:45", "%Y %M %D") AS 'OFFLOADED DATE';
+----------------+
| OFFLOADED DATE |
+----------------+
| NULL |
+----------------+
1 row in set (0.00 sec)このように、年や月などの日付情報を整形したい場合は、TIME_FORMAT()ではなくDATE_FORMAT()関数を使用する必要があります。用途に応じて両者を正しく使い分けることが重要です。
-
データベースクエリでMySQLストアド関数を活用する方法を具体例で解説
MySQLでは、独自に作成したストアド関数(ユーザー定義関数)をSELECT文などのデータベースクエリの中で直接呼び出すことができます。これにより、複雑な計算処理をSQL文の中で簡潔に実行できるようになります。ここでは、利益(Profit)を計算するストアド関数を作成し、その関数をテーブル「item_list」のデータに対してクエリ経由で適用する例を見ていきましょう。ストアド関数「profit」の作成まず、原価(Cost)と販売価格(Price)を受け取り、両者の差額である利益を返す関数「profit」を作成します。mysql> CREATE FUNCTION profit(Cost D
-
MySQLでTIME型を使う方法をわかりやすく解説
MySQLでは、時刻のみを扱いたい場合にTIME型を使用します。ログイン時間や処理にかかった時間など、日付を含まない時刻データの保存に便利です。ここでは、実際にテーブルを作成し、TIME型のカラムにデータを挿入・取得する手順を順番に見ていきましょう。 1. TIME型カラムを持つテーブルを作成する まず、TIME型のカラム(LoginTime)を含むテーブル「DemoTable」を作成します。これにより、ユーザーのログイン時刻を記録できるようになります。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMEN