YYYY-DD-MM 形式の PHP 文字列と MySQL のタイムスタンプがある場合、それらの間で変換する良い方法はありますか?
質問
日付文字列と MySQL タイムスタンプを比較することに興味があります。しかし、簡単に変換できるとは思えません。何か明らかなことを見落としているのでしょうか?
解決
タイムスタンプから形式への変換:
date('Y-m-d', $timestamp);
フォーマット済みからタイムスタンプへの変換:
mktime(0, 0, 0, $month, $day, $year, $is_dst);
見る 日付 そして エムクタイム さらに詳しい文書については。
保存に関しては、書式設定された日付としてストリングに MySQL DATE 形式を使用するかどうかはユーザー次第です。UNIX タイムスタンプとして保存するための整数として。または、数値タイムスタンプを読み取り可能な形式に変換する MySQL の TIMESTAMP 形式を使用することもできます。 MySQL ドキュメントを確認してください タイムスタンプ情報については。
他のヒント
を使用する必要を避けることができます strtotime()
または getdate()
で PHP MySQL を使用することで UNIX_TIMESTAMP()
関数。
SELECT UNIX_TIMESTAMP(timestamp) FROM sometable
結果のデータは標準の整数 Unix タイムスタンプになるため、次のデータと直接比較できます。 time()
.
プロセスを簡素化するために、次の小さな関数を作成しました。
/**
* Convert MySQL datetime to PHP time
*/
function convert_datetime($datetime) {
//example: 2008-02-07 12:19:32
$values = split(" ", $datetime);
$dates = split("-", $values[0]);
$times = split(":", $values[1]);
$newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);
return $newdate;
}
これがお役に立てば幸いです
strtotime() そして getdate() は、文字列とタイムスタンプから日付を取得するために使用できる 2 つの関数です。ただし、MySQL と PHP のタイムスタンプ間で変換する標準ライブラリ関数はありません。
PHPを使用する 日付 関数。クエリ内で mysql タイムスタンプを Unix タイムスタンプに変換する必要がある場合があります。 UNIX_TIMESTAMP mysqlの関数。
次の形式の日付文字列:
YYYY-MM-DD
それに関連する時間はありません。MySQL タイムスタンプの形式は次のとおりです。
YYYY-MM-DD HH:mm:ss
2 つを比較するには、日付文字列に時刻 (たとえば、午前 0 時) を追加する必要があります。
$datetime = '2008-08-21'.' 00:00:00';
次に、関数を使用してそれらの間のエポック時間を比較します
if (strtotime($datetime) > strtotime($timestamp)) {
echo 'Datetime later';
} else {
echo 'Timestamp equal or greater';
}