MySQL сравнение не сравнивает

Тема в разделе "Базы данных", создана пользователем Albert22, 9 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Всем привет

    Задача:
    Имеется таблица с событиями, нужно в зависимости от запроса вывести или прошедшие или будщие.
    Я решил делать так: держать у каждого события его дату в формате Unix, при запросе, например, если нужно будущее событие то взять текущую метку функцией time() и если она меньше чем у события, то оно в будущем, и наоборот.
    Всё бы ничего но сложность возникает на этом этапе:
    Код:
    $timeFilter=check($_REQUEST['timeFilter']);
    $time=time();
    if($timeFilter=='future'){
    $result = mysql_query("SELECT * FROM ".$tableName." WHERE `date`>='".$time."' ORDER BY rate/votes DESC LIMIT $start, $pnum");
    }elseif($timeFilter=='past'){
    $result = mysql_query("SELECT * FROM ".$tableName." WHERE `date`<'".$time."' ORDER BY rate/votes DESC LIMIT $start, $pnum");
    }else{
    $result = mysql_query("SELECT * FROM ".$tableName." ORDER BY rate/votes DESC LIMIT $start, $pnum");
    }
    
    В базе событие одно - тестовое, по дате оно в будущем. Вне зависимости от запроса оно выдаётся полюбому.
    Даже когда я убрал все условия и упростил до
    Код:
    $result = mysql_query("SELECT * FROM `events` WHERE `date`<'1234137900'");
    
    то есть нарошно сравнил с меньшей датой чтоб его не выбрало, его таки выбрало...

    подскажите пожалуйста в чём проблема
    П.С. поле `date` - INT
    П.П.С. в phpmyadmin'e во вкладке SQL тот же запрос работает нормально, т.е. mysql вернула пустой результат (как и должно быть)...

    Спрашиваю здесь так как думаю что вопрос касается MySQL
    Если же он из отрасли PHP, пожалуйста, преместите в соответсвующий раздел
     
  2. ozware

    ozware

    Регистр.:
    22 апр 2007
    Сообщения:
    327
    Симпатии:
    42
    мистика какая-то:)

    попробуйте поле date сделать unsigned, если оно будет signed, то при больших значениях даты оно становится отрицательным
     
    Albert22 нравится это.
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    В твоём случае лучше использовать формат datetime и сравнивать с NOW()
    Код:
    SELECT * FROM ".$tableName." WHERE `date`>= NOW()
    Не видя всего кода и базы можно только гадать.
     
    Albert22 нравится это.
  4. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Нет, не мистика, невнимательность, и за неё приношу извинения.
    Ниже в коде выполнялось (а не должно было) условие, которое перезаписывало переменную $result.
    Это происходило при определённых обстоятельствах, которые я недоглядел и сейчас устраняю.
    Всем спасибо (PHP_Masterу как всегда отдельное), решено.
     
Статус темы:
Закрыта.