[英]How to form this zend_db_select statement to compare timestamp
這就是我想要做的。
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小時)。
意見表示贊賞。
->where("timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)");
這是使用MySQL的timestamp / datetime / date列類型的優勢-您可以使用其內置的日期和時間函數。 我很確定您在這里不需要Zend_Db_Expr
。
編輯 :我不是很清楚你在問什么,但是我認為上面的WHERE子句可以滿足你的要求。 您可以改為:
->where("DATE_ADD(timestamp, INTERVAL 1 DAY) < NOW()");
這是同一件事,但寫法卻不同。 這意味着“時間戳+ 1天小於當前時間”。
如果有幫助,請嘗試在數據庫上運行此查詢:
SELECT DATE_ADD(timestamp, INTERVAL 1 DAY), NOW() FROM hl
這樣您就可以了解MySQL中的DATE_ADD()
函數如何工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.