[英]PHP/mySQL get time difference by x seconds
我的目標是獲取兩個不同時間之間的時差,其中一個來自我的數據庫,另一個來自客戶端的PHP時間戳,然后進行比較。 然后,如果時間差小於或等於10秒,請執行某些操作。
我的代碼無效,如下所示。
date_default_timezone_set('America/Chicago');
$timestamp = date('Y-m-d H:i:s');
$sqlcheck = $dbh->prepare("SELECT timestem FROM mytable WHERE UNIX_TIMESTAMP(timestem) - UNIX_TIMESTAMP('".$timestamp."') <= 10");
$sqlcheck->execute();
if ($sqlcheck === ''){
echo "Yes";
}
else {
echo "No";
}
timestem
是mySQL中的DATETIME值。 $sqlcheck
旨在描述查詢結果。 如果查詢未返回任何內容,則echo Yes
。 如果它從我的查詢返回了某些內容,則echo No
不必費神費力地解釋一下,我的最終目標是檢查自允許客戶端執行更新之前的數據庫操作以來已經有多長時間了。
您應該使用MySQL內置的TIMESTAMPDIFF
函數:
$sqlcheck = $dbh->prepare('SELECT timestem FROM mytable WHERE TIMESTAMPDIFF(SECOND, timestem, $1) <= 10');
$result = $sqlcheck->execute([$timestamp]);
請注意,我不是將字符串連接起來,而是將$timestamp
作為參數化的參數提供。
要檢查結果,不能只檢查字符串是否相等。 而是在結果對象上使用fetchColumn
:
if ($timestem = $result->fetchColumn()) {
echo "YES";
// You can also use the value of `$timestem` here.
} else {
echo "NO";
}
請注意,這是假設只有一行。 對於多行,您需要一個循環。 請注意,僅返回符合條件的行,因此,如果使用循環,將永遠不會看到任何NO
輸出。
您可以輕松地在PHP中進行檢查(這可能會更簡單一些)
$sqlcheck = $dbh->prepare( "SELECT timestem FROM mytable" );
$sqlcheck->execute();
// You missed this step
$timestem = $sqlcheck->fetchColumn();
if ( time() - strtotime( $timestem ) > 10 )
print 'yes';
else
print 'no';
一些注意事項:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.