Сравнение дат PHP Mysql - PullRequest
       16

Сравнение дат PHP Mysql

2 голосов
/ 20 февраля 2012

У меня есть система, которая сравнивает даты таблицы 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"; };
?>

У меня есть два набора значений:

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

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

Однако из таблицы выводится, что оба эти значения являются «актуальными», если первое явно не соответствует.

Есть ли способ сделать это вообще, и если да, то как!

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012
$some_date_timestamp = strtotime('18-02-2011');

$current_timestamp = time();

echo ($some_date_timestamp < $current_timestamp) ? 'Old date' : 'Future date';
2 голосов
/ 20 февраля 2012

$ сегодня = 19-02-2012 (сегодняшняя дата) и $ redate_converted_date = 12-02-2012 (дата из БД)

Нельзя сравнивать даты в этом формате: Они будут сравниваться как строки, а не даты, что приведет к неверным результатам.

Используйте strtotime() или DateTime, чтобы преобразовать их в метки времени (илиDateTime объектов), которые вы можете сравнить.

1 голос
/ 20 февраля 2012

Как еще одна возможность, вы можете экспортировать как метку времени Unix прямо из БД, обернув ее в такую ​​функцию:

SELECT *, UNIX_TIMESTAMP(`iep_renewal`) AS iep_renewal_unix

Возможны проблемы с производительностью, связанные с переносом столбцов в функции для больших наборов данных.

...