2

特定のドキュメントを更新する必要があるかどうかを確認するために、mysql テーブルの日付を今日の日付と比較するシステムがあります。

<?php
        $student_id = $row_student['student_id'];

        $query_ieps = mysql_query("SELECT * FROM `iep` WHERE student_id = ".$student_id."") or die(mysql_error());

        $iep_count = mysql_num_rows($query_ieps);

        $row_iep = mysql_fetch_assoc($query_ieps);

        $today = date("d-m-Y");

        $iep_date = $row_iep['iep_renewal'];

        $convert_iep_date = date("d-m-Y", strtotime($iep_date));

        $redate_coverted_date = $convert_iep_date; 

        if($iep_count == 0){ $iep_status = "No IEP on record"; $iep_td_status = "grey-alert"; }
        elseif($today <= $redate_coverted_date) { $iep_status = "Due for Renewal"; $iep_td_status = "mid-alert"; }
        elseif($today >= $redate_coverted_date) { $iep_status = "Up to Date"; $iep_td_status = "green-alert"; };
?>

私は2セットの値を持っています:

id: 1 -> iep_renewal: 12-02-2012

id: 2 -> iep_renewal: 12-08-2012

ただし、表は、最初の値が明らかにそうでない場合でも、これらの値の両方が「最新」であると出力します。

これを行う方法はありますか?

4

3 に答える 3

3
$some_date_timestamp = strtotime('18-02-2011');

$current_timestamp = time();

echo ($some_date_timestamp < $current_timestamp) ? 'Old date' : 'Future date';
于 2012-02-19T21:37:15.907 に答える
2

$today = 19-02-2012 (今日の日付) および $redate_converted_date = 12-02-2012 (DB からの日付)

その形式で日付を比較することはできません。日付ではなく文字列として比較されるため、誤った結果につながります。

strtotime()またはを使用して、それらを比較可能なタイムスタンプ (またはオブジェクト)DateTimeに変換します。DateTime

于 2012-02-19T21:32:52.867 に答える
1

別の可能性として、次のような関数でラップすることにより、DB から UNIX タイムスタンプとして直接エクスポートできます。

SELECT *, UNIX_TIMESTAMP(`iep_renewal`) AS iep_renewal_unix

大規模なデータ セットの関数で列をラップすると、パフォーマンスの問題が発生する場合があります。

于 2012-02-19T21:41:49.830 に答える