2013-11-14 44 views
0

我想從使用下面的函數在過去24小時內創建的表中選擇記錄。我不明白爲什麼它返回的所有記錄,而不僅僅是過去24個小時的(創建> UNIX_TIMESTAMP(DATE_SUB(NOW(),間隔24小時))。pdo mysql時間戳過濾器被忽略

任何建議表示讚賞。

function getActive() 
{ 
global $dbh; 

$statement = $dbh->prepare("SELECT * FROM jobs WHERE created > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 24 HOUR))"); 

$statement->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Jobs'); 

$statement->execute();  
$result  = $statement->fetchAll(); 


return ($result)?$result:array(); 
} 
+0

什麼created'的'類型?除非它是一個int和存儲的實際UNIX時間戳(秒1月以來1970分之1),你比較會失敗因爲它會是蘋果/桔子的情況。 –

+0

什麼數據類型是'cr eated'?它應該是'DATETIME',因爲本地數據類型通常比在數據庫中強制使用外部約定更好。 – tadman

+0

的數據類型是'timestamp' –

回答

0

首先檢查您創建的列數據類型,如果它是正確的,那麼試試這個

SELECT * FROM jobs WHERE created < date_add(NOW(), INTERVAL -24 HOUR) 
+0

減去一個正值並加上一個負值應該是一樣的。 – tadman