Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我怎样才能说出一个条件,使sql语句提取2小时前已解析的订单?_Php_Html_Mysql_Sql - Fatal编程技术网

Php 我怎样才能说出一个条件,使sql语句提取2小时前已解析的订单?

Php 我怎样才能说出一个条件,使sql语句提取2小时前已解析的订单?,php,html,mysql,sql,Php,Html,Mysql,Sql,我需要一个网页,以显示项目是活跃的,并已被派遣不到2小时前,我无法找出不到2小时前的部分 我试图设置一个日期变量,该变量比当前时间晚2小时,并比较分配给该变量的时间 $DateVar = date('Y-m-d h:i', strtotime('-2 hours')); $sql="SELECT Id, TransactionId, WONumber, DispatchText, SentBy, Vendor, Dispatched, Acknowledged, Ti

我需要一个网页,以显示项目是活跃的,并已被派遣不到2小时前,我无法找出不到2小时前的部分

我试图设置一个日期变量,该变量比当前时间晚2小时,并比较分配给该变量的时间

$DateVar = date('Y-m-d h:i', strtotime('-2 hours'));

$sql="SELECT Id, TransactionId, WONumber, DispatchText, SentBy, Vendor, Dispatched,
             Acknowledged, TimeDispatched, Time
      FROM `DumpsterDispatch`
      WHERE (Dispatched IS NULL
      OR Acknowledged = 'N'
      OR TimeDispatched >= \"$DateVar\")
      AND Id > 1490
      ORDER BY Id DESC LIMIT 100";

我希望该网页显示所有活动订单和过去2小时内解决的任何订单,但使用此代码,它将显示给定日期的所有已解决订单

我建议您让MySQL处理,以防止时区相关问题。例如

选择Id、TransactionId、WONumber、DispatchText、SentBy、供应商、已发送、已确认、已发送时间、时间
从`转储程序调度`
在哪里(
发送的值为空
或已确认='N'
或TimeDispatched>=日期(现在(),间隔2小时)
Id>1490
)
按Id描述的订单限制为100;
另一种方法是使用
UNIX\u TIMESTAMP()
,它还将给出UTC时间戳,就像您的
strotime('-2小时)
所做的那样。例如

$dateVar=strottime('-2小时');
$sql=“选择Id、TransactionId、WONumber、DispatchText、SentBy、供应商、已调度、已确认、时间调度、时间
来自“DumpsterDispatch”
在哪里(
发送的值为空
或已确认='N'
或UNIX_时间戳(TimeDispatched)={$dateVar}
)
Id>1490
按Id描述的订单限制为100”;
我想出来了

    $DateVar = date('Y-m-d h:i', strtotime('-2 hours'));

    $sql="SELECT data
    FROM `table`
    WHERE (Dispatched IS NULL
    OR Acknowledged = 'N'
    OR TimeDispatched >= \"$DateVar\")
    AND Id > 1490
    ORDER BY Id DESC LIMIT 100";

您不应该将时间从PHP注入SQL。MySQL有一个叫做
INTERVAL 2 HOUR
的东西,你可以用它来计算时间。请参阅:我用UNIX_TIMESTAMP()实现了代码段,但它现在将显示6小时前的订单,而不仅仅是我想要的2个。您能显示插入查询吗?如何设置
TimeDispatched
是的,TimeDispatched保存格式为YYYY-mm-dd h:iI的日期意味着如何插入查询;如果使用
插入表(列)值(NOW())它应该可以工作。我认为时区在捉弄你,因为你只有6小时而不是2小时。。您可以使用签入PHP,也可以使用签入MySQL。如果是系统,请转到您的控制台(Linux)并运行
date
。很重要的一点是,你必须很好地理解这一点,否则你以后可能会遇到问题(例如DST)