YYYY-DD-MM 形式の PHP 文字列と MySQL のタイムスタンプがある場合、それらの間で変換する良い方法はありますか?

StackOverflow https://stackoverflow.com/questions/20598

質問

日付文字列と 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';
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top