MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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()関数を使用する必要があります。用途に応じて両者を正しく使い分けることが重要です。

  1. データベースクエリでMySQLストアド関数を活用する方法を具体例で解説

    MySQLでは、独自に作成したストアド関数(ユーザー定義関数)をSELECT文などのデータベースクエリの中で直接呼び出すことができます。これにより、複雑な計算処理をSQL文の中で簡潔に実行できるようになります。ここでは、利益(Profit)を計算するストアド関数を作成し、その関数をテーブル「item_list」のデータに対してクエリ経由で適用する例を見ていきましょう。ストアド関数「profit」の作成まず、原価(Cost)と販売価格(Price)を受け取り、両者の差額である利益を返す関数「profit」を作成します。mysql> CREATE FUNCTION profit(Cost D

  2. MySQLでTIME型を使う方法をわかりやすく解説

    MySQLでは、時刻のみを扱いたい場合にTIME型を使用します。ログイン時間や処理にかかった時間など、日付を含まない時刻データの保存に便利です。ここでは、実際にテーブルを作成し、TIME型のカラムにデータを挿入・取得する手順を順番に見ていきましょう。 1. TIME型カラムを持つテーブルを作成する まず、TIME型のカラム(LoginTime)を含むテーブル「DemoTable」を作成します。これにより、ユーザーのログイン時刻を記録できるようになります。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMEN