[英]find active records from table based on date time in php and sql server
我需要從我的表中獲取活動記錄。 一條記錄處於活動狀態意味着它沒有過期,過期時間是記錄生成后的 2 分鍾。 我正在使用 sql server 數據庫。 這是我的表的結構
我的代碼如下
$serverName = "xxx.xx.x.xxx";
$connectionInfo = array( "Database"=>"xxxxxx", "UID"=>"xxxxx", "PWD"=>"xxxxxx");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn)
echo 'success';
else
echo "failed";
$currentTime = date('Y-m-d H:i:s');
$query = "SELECT * FROM ApiTockenMaster WHERE Tocken = ? AND DateGenerated <= ? AND Status = ?";
$params = array("xxxxxxx", "2018-09-03 18:06:17.7600000", "Generated");
$result = sqlsrv_query( $conn, $query, $params);
$row = sqlsrv_fetch_array($result);
echo '<pre>'; print_r($row);
echo count($row);
我需要DateGenerated
的條件為
currenttime <= DateGenerated + 2 minutes
如何在查詢中實現此條件
另一種可能的方法是讓 SQL Server 使用CURRENT_TIMESTAMP和DATEADD()進行檢查:
<?php
# Connection
$serverName = "xxx.xx.x.xxx";
$connectionInfo = array(
"Database"=>"xxxxxx",
"UID"=>"xxxxx",
"PWD"=>"xxxxxx"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn) {
echo "Connection established.<br />";
} else {
echo "Connection could not be established.<br />";
die(print_r(sqlsrv_errors(), true));
}
# Statement
$query = "
SELECT *
FROM ApiTockenMaster
WHERE
(Tocken = ?) AND
(CURRENT_TIMESTAMP <= DATEADD(mi, 2, DateGenerated)) AND
(Status = ?)
";
$params = array(
"xxxxxxx",
"Generated"
);
$result = sqlsrv_query($conn, $query, $params);
if ($result === false){
die(print_r(sqlsrv_errors(), true));
}
# Result
$row = sqlsrv_fetch_array($result);
echo '<pre>';
print_r($row);
echo count($row);
?>
您可以使用DATEADD :
currenttime <= DATEADD(MINUTE, 2, DateGenerated);
試試這個,我還沒有測試過,但它會是這樣的。
$currenttime= date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s")." +2 minutes"));
$params = array("xxxxxxx", $currenttime, "Generated");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.