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

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

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

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

変換の基本の流れ

  1. DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する
  2. format() … 解析結果を「H:i:s」(24時間表記)の文字列に整形する

サンプルコード

$phpTime = '11:00 AM';
echo('PHP側の時刻フォーマット = ');
echo($phpTime);

// 12時間表記の文字列をDateTimeオブジェクトに変換
$timeFormat = DateTime::createFromFormat('h:i A', $phpTime);

// MySQL用の時間形式(HH:MM:SS)に整形
$MySQLTimeFormat = $timeFormat->format('H:i:s');

echo('<br />');
echo('MySQL側の時刻フォーマット = ');
echo($MySQLTimeFormat);

実行結果

PHP側の時刻フォーマット = 11:00 AM
MySQL側の時刻フォーマット = 11:00:00

このように、「11:00 AM」がMySQLでそのまま利用できる「11:00:00」に変換されました。変換後の値は、TIME型のカラムにそのままINSERTすることができます。

使われている書式指定子の意味

指定子意味
h12時間表記の時(01〜12)11
H24時間表記の時(00〜23)23
i分(00〜59)00
s秒(00〜59)00
A午前・午後(AM/PM)AM

実装時のポイント

AM/PM付きの入力文字列を解析する場合は、12時間表記に対応したh:i Aを指定するのが確実です。一方、MySQLへ渡す出力には24時間表記のH:i:sを使用します。入力と出力で書式指定子を使い分けることが、正しく変換するためのポイントです。

また、実際のアプリケーションに組み込む際は、SQLインジェクション対策として、プレースホルダを使ったプリペアドステートメントで値をバインドすることをおすすめします。

  1. MySQLでNULLを0に変換する方法|IFNULLとCOALESCEの使い方を実例で解説

    MySQLでNULLを0に変換する方法 MySQLでは、テーブル内のNULL値をそのまま表示すると、集計やアプリケーション側の処理で扱いにくいケースがあります。そんなときは、IFNULL()関数またはCOALESCE()関数を使えば、NULLを簡単に0へ変換できます。 基本構文 IFNULL関数を使う場合の構文は以下のとおりです。第1引数がNULLの場合に、第2引数(ここでは0)が返されます。 SELECT IFNULL(yourColumnName, 0) AS anyAliasName FROM yourTableName; COALESCE関数を使う場合の構文は次のとおりです。 SEL

  2. 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タイムスタンプに変換