簡體   English   中英

如何形成此zend_db_select語句以比較時間戳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM