Проверьте, если сегодняшняя дата до или после даты, проведенной в sql

0

Я не понимаю, почему это не работает.

Дата, которая хранится в базе данных,

    $date2=Date('d/m/y', strtotime("+90 days"));

Хранится в колонке с этой информацией varchar (255) latin1_swedish_ci

Вывод:

    $get_w_date = $qr['r_e_date']; 
    print"
   <tr><th colspan=\"2\"> <b>Warranty Status</b> </th></tr>";
   if(strtotime($get_w_date) > time()) {
   echo '<tr bgcolor=\"ff00ff\"> outcome 1';
   } else {
   echo '<tr bgcolor=\"00ff00\"> outcome 2';
   }

Он всегда запускает результат 2 независимо от даты в базе данных, которая была до этого или нет :(

  • 1
    Вы не должны хранить даты в полях varchar , это усложнит сравнение и сортировку в sql.
  • 0
    @jeroen - особенно с этим форматом даты.
Показать ещё 1 комментарий
Теги:

2 ответа

0

Следующий код предназначен для проверки того, сохранена ли дата за 1 день до или после:

<?php
$date = date('Y-m-d');
Echo "Today : $date<br/>";

$saved = "2013-12-29";  // For output i set the date instead of $qr['r_e_date']; 
$previous_date = date('Y-m-d', strtotime($saved .' -1 day'));
Echo "Previous to saved date : $previous_date<br/>";

$next_date = date('Y-m-d', strtotime($saved .' +1 day'));
Echo "Next to saved date : $next_date<br/><br/>";

if($previous_date == $date)
{
Echo "Before";
}
else if($next_date == $date)
{
Echo "After";
}
?>

Примечание для приведенного выше кода для работы в базе данных необходимо сохранить в Ymd (Год-месяц-дата).


Если вы хотите удалить ограничение на 1 день, вы можете использовать следующий код для проверки до, после или той же даты:

<?php
$date = date('Y-m-d');
Echo "Today : $date<br/>";
$todayA=explode("-",$date);

$saved = "2014-01-03";  // For output i set the date instead of $qr['r_e_date']; 
Echo "Saved : $saved<br/><br/>";
$savedA=explode("-",$saved);

if($savedA[0]==$todayA[0])
{
    if($savedA[1]==$todayA[1])
    {
        if($savedA[2]==$todayA[2])
        {
        Echo "Same Date";
        }
        else if($savedA[2]<$todayA[2])
        {
        Echo "Before";
        }
        else
        {
        Echo "After";
        }
    }
    else if($savedA[1]<$todayA[1])
    {
    Echo "Before";
    }
    else
    {
    Echo "After";
    }
}
else if($savedA[0]<$todayA[0])
{
Echo "Before";
}
else
{
Echo "After";
}
?>
  • 0
    Разве это не сработает, только если сегодня 1 день до или после?
  • 0
    да покажет вывод за один день до или после
Показать ещё 3 комментария
0

Это намного проще, если вы не сохранили свои даты в виде строк.

Попробуйте использовать STR_TO_DATE() и UNIX_TIMESTAMP(). Ваш SQL:

SELECT UNIX_TIMESTAMP(STR_TO_DATE(r_e_date, "%m/%d/%y")) as r_e_date

Ваш PHP:

$get_w_date = $qr['r_e_date']; 
if($get_w_date > time()) {

Ещё вопросы

Сообщество Overcoder
Наверх
Меню