dongshou1991 2018-09-04 04:42
浏览 70
已采纳

根据php和sql server中的日期时间从表中查找活动记录

I need to fetch active records from my table. A record is active means it is not expired and the expiration time is 2 minutes after record is generated. I am using sql server database. Here is the structure for my table enter image description here

And my code is as follows

$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);

I need the condition for DateGenerated as

currenttime <= DateGenerated + 2 minutes

How can I implement this condition in my query

  • 写回答

3条回答 默认 最新

  • doucheng9058 2018-09-04 05:45
    关注

    Another possible approach is to let the SQL Server do the check using CURRENT_TIMESTAMP and 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);
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么