2013-06-27 2 views
0

Это то, что я пытаюсь сделать.Как сформировать эту инструкцию zend_db_select для сравнения временной отметки

id ip  timestamp   userid 
    9 127.0.0.1 2013-06-27 16:52:49 35 

Я хотел бы сначала запросить таблицу, чтобы узнать, сохраняется ли ip для пользователя. Если да, то он проголосовал 2) Проверьте отметку времени голосования против текущей отметки времени, если его время голосования будет через 24 часа, а затем разрешить ему снова проголосовать. Убедитесь, что он может голосовать только один раз в 24 часа.

Это мой текущий оператор zend_db_select. Есть некоторые проблемы, возникающие с логикой

function checkIfCanLikeH($hlid,$ip){ 
    $canlike = false; 
    $currenttime = time(); 
    $checkquery = $this->dbo->select() 
     ->from("hl", array("num"=>"COUNT(*)")) 
     ->where("hlid = ?", $hlid) 
     ->where("ip = ?", $ip) 
     ->where("timestamp < ".new Zend_Db_Expr('NOW()')); 
    $this->dbo->setFetchMode(Zend_Db::FETCH_ASSOC); 
    $checkrequest = $this->dbo->fetchRow($checkquery); 
    if($checkrequest['num']!=0){ 
     $ip = true; 
    } 
    return $ip; 
} 

У меня есть вопрос, как сравнить метку времени. Мне нужно получить временную метку из таблицы и проверить, меньше ли текущее время, чем значение в таблице (добавлено 24 часа).

Рекомендации оценили.

ответ

1
->where("timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)"); 

Это преимущество использования типов столбцов метка времени/даты и времени/даты в MySQL - вы можете использовать свои встроенные функции даты и времени. И я уверен, что здесь вам не нужен Zend_Db_Expr.

Редактировать: Я не совсем понимаю, что вы просите, но я думаю, что предложение WHERE выше делает то, что вы хотите, просто наоборот. Вы можете сделать это вместо этого:

->where("DATE_ADD(timestamp, INTERVAL 1 DAY) < NOW()"); 

, который является тем же самым, но написан другим способом. Это означает, что «где метка времени + 1 день меньше текущего времени».

Если это поможет, попробуйте запустить этот запрос в базе данных:

SELECT DATE_ADD(timestamp, INTERVAL 1 DAY), NOW() FROM hl 

так что вы можете увидеть, как DATE_ADD() функция в MySQL работает.

+0

привет тим! Спасибо за ваш ответ. Хотелось бы спросить, как получить значение timestamp из моего столбца таблицы и добавить к нему 1 день. Мне нужно сравнить текущую временную метку с меткой времени (в таблице + 1 день). я могу сделать это в одном запросе? – Slay

+0

Я отредактировал свой ответ - посмотрим, насколько это яснее. –

 Смежные вопросы

  • Нет связанных вопросов^_^