2012-02-19 14 views
2

私はMySQLを比較しているシステムを持っているが、特定の文書を更新する必要があるかどうかを確認するために今日の日付と日付を提出:日付の比較PHP MySQLの

ID:

<?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組の値を持っています:1 - > iep_renewal:2012年12月2日

番号:2 - > iep_renewal:2012年12月8日

しかし最初は明らかである場合、これらの値の両方が、「最新の状態」であるテーブル出力そうではありません。

これを行う方法はありますか?その場合はどうすればよいですか。

+0

'$ today'と' $ redate_coverted_date'の値は何ですか? –

+0

私の頭に浮かぶ最初のことは、タイムスタンプを使用して日付/時刻を比較する方が良いと常に考えていることです。日付をタイムスタンプに変換するだけです。現在のタイムスタンプを取得すると、簡単な数学問題になります。 – Crinsane

+0

@Pekka $ today = 19-02-2012(今日の日付)と$ redate_converted_date = 12-02-2012(DBからの日付) –

答えて

2

$今日= 19-02-2012(今日の日付)と$ redate_converted_date = 2012年12月2日(DBから日付)

あなたはその形式で日付を比較することはできません:彼らは」日付ではなく文字列として比較され、不正確な結果につながります。

あなた比較することができ、タイムスタンプ(またはDateTimeオブジェクト)に変換するために使用strtotime()または​​。別の可能性として

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

$current_timestamp = time(); 

echo ($some_date_timestamp < $current_timestamp) ? 'Old date' : 'Future date'; 
+0

あなたとペッカの答えが助けてくれましたが、私は私の受け入れられた答えとして1つだけ入れることができます!ありがとう –

+0

いいえprob!お役に立てて嬉しいです – Crinsane

1

、あなたがこのような機能でそれをラップすることにより、ストレートDBのうち、UNIXタイムスタンプとしてエクスポートすることができます。

SELECT *, UNIX_TIMESTAMP(`iep_renewal`) AS iep_renewal_unix 

の列をラップに関連するパフォーマンス上の問題があるかもしれません大規模なデータセットの機能