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

PHPとMySQLで時刻を扱う方法|strtotime()とDATE_FORMAT()による形式変換

PHPで時刻形式を変換する方法

PHPで時刻データを扱う際、strtotime()関数を使えば、「8:55 PM」のような人間が読みやすい12時間制の表記を、データベースで扱いやすい24時間制(HH:MM:SS)へ簡単に変換できます。

PHPコード例

$timeValue = '8:55 PM';
$changeTimeFormat = date('H:i:s', strtotime($timeValue));
echo("24時間制への変換結果=");
echo($changeTimeFormat);

このコードでは、まずstrtotime()が文字列「8:55 PM」をUNIXタイムスタンプに変換し、次にdate()関数のフォーマット指定子「H:i:s」によって24時間制の時刻文字列を生成しています。「H」は24時間制の時、「i」は分、「s」は秒を意味します。

実行結果

24時間制への変換結果=20:55:00

MySQLで元の12時間制形式を取得する方法

逆に、MySQL側で24時間制の日時データから12時間制の表記を取り出したい場合は、DATE_FORMAT()関数を使用します。フォーマット指定子の「%l」は12時間制の時、「%i」は分、「%p」はAM/PMを表します。

MySQLクエリ例

mysql> SELECT CONCAT('MySQLでの12時間制変換結果=',
    DATE_FORMAT('2019-03-12 20:55:00', '%l:%i %p')) AS OriginalTimeFormat;

実行結果

+------------------------------------------------+
| OriginalTimeFormat                             |
+------------------------------------------------+
| MySQLでの12時間制変換結果=8:55 PM |
+------------------------------------------------+
1 row in set (0.00 sec)

まとめ

PHPのstrtotime()date()を組み合わせれば柔軟な時刻変換が可能であり、MySQLのDATE_FORMAT()を使えばSQLレベルで表示形式を自由に制御できます。用途に応じて両者を使い分けることで、アプリケーションとデータベース間の時刻データ連携がよりスムーズになります。なお、日本語環境で運用する場合はタイムゾーン設定(date_default_timezone_set('Asia/Tokyo')やMySQLのtime_zone)も合わせて確認しておくと安心です。

  1. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用

  2. PHP変数「11:00 AM」をMySQLの時間形式に変換する方法

    PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2