2017-02-06 11 views
2
<?php   
    date_default_timezone_set('Asia/Kolkata'); 
    $currentDate = date("d M Y h:i:s a"); 
    $sql=mysql_query("update products set past=0 where valid_date>'".$currentDate."'"); 
    $sql1=mysql_query("update products set past=1 where valid_date<'".$currentDate."'"); 
?> 

выше мой код. если valid_date - 31 января 2017 года 12:25:07, SQL-запрос по-прежнему воспринимает это как будущую дату (то есть большую, чем сегодняшняя дата), но требуется 5 февраля 2017 года 12:25:07 вечера в прошлом. Точно сказать, что запрос правильно сравнивает даты в феврале, а даты в январе ошибочно.SQL сравнения даты ошибочно

Что не так в моем коде?

+0

Вы должны проверить операции с MySql Date https://dev.mysql.com/doc/refman/5.5/ru/date-and-time-functions.html –

+0

Спасибо @UmeshAawte – SUNIL

ответ

0

Попробуйте это,

<?php   
    date_default_timezone_set('Asia/Kolkata'); 
    $sql=mysql_query("update products set past = CASE WHEN valid_date > NOW() THEN 0 WHEN valide_date < NOW() THEN 1 END where 1 = 1"); 
?> 

Это документация для NOW() функции MySQL.

И как указано в вашем состоянии, этот код будет работать.

+0

Я попробовал запустить этот код. Прошлое остается 0 для всех. Нет изменений. – SUNIL

+0

попробуйте запустить этот запрос в браузере mysql. и проверить, обновляется ли и какой формат даты столбца в вашей таблице. – rahulsm

+0

Теперь я попытался выполнить запрос в браузере mysql, он повернул все прошлое до 1, а формат даты столбца в моей таблице - varchar – SUNIL