そのため、入力テキスト フィールドを使用して、データ型が TIME のデータベース テーブルに時刻を挿入しようとしています。
挿入したい時間の形式は次のようになります。
H:MM pm// 例: 6:30 pm
問題は、午前/午後がデータベース テーブルに挿入されないことです。時と分だけです。
これを解決する方法を教えてください。サンプルコードでより良い。ありがとう。
Data TypeTIME
は時刻データ型を格納するためのものです。つまり、AM/PM はありません。データベースにデータを 24 時間形式で保存し、次のいずれかを使用して、PHP または MySQL で午前/午後の 12 時間形式にフォーマットします。
PHP:
$date = new DateTime($mysql_column['time']);
$date->format('h:i:s a');
また:
$date = date('h:i:s a', strtotime($mysql_column['time']));
またはMySQL:
SELECT DATE_FORMAT('%h:%i:%s %p', time) FROM table;
を標準TIME
の形式 ( 18:30:00
) として保存し、表示するときに任意の形式で保存します (DateTime
オブジェクトまたは日付関数を使用)。
MySQL は、時刻データを格納する際に追加の形式をサポートしていません。
フィールドのタイプをvarcharに変更します。TIMEはそのように保存することはできません。ただし、希望どおりに保存すると、最終的に必要になる場合は、ローカライズされた結果を提供することがより困難になることに注意してください。つまり、タイムスタンプ自体を保存するのではなく、ユーザーフレンドリーな表現を保存する場合、タイムゾーンのサポートは困難になります。
編集:または、上記のコメントで指摘されているように、DATETIMEも同様に機能します。
PHPでDateTimeオブジェクトを使用できます。これには、任意の形式から時間オブジェクトを作成する機能があり、そのように任意の形式で時間を出力する機能もあります
<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>
フィールド タイプを「VARCHAR (32)」に変更してから、PHP で時刻を書き込むのが最適です。
Example: date('m/d/y g:i:sa');
とにかく午前または午後を保存したいのはなぜですか?日付/時刻を UNIX エポック タイムスタンプとして保存する場合は、データベースではなく、プログラム内で必要に応じて日付をフォーマットできます。
Example: time(); - Store this in an INT(8) field.
date('m/d/y g:i:sa, $time()); - Output from DB like this.
日付変数の後に .ToShortTimeString() を試してください。