我需要一个网页来显示活动项目和不到 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处理它,以防止与时区相关的问题。 例如
SELECT Id, TransactionId, WONumber, DispatchText, SentBy, Vendor, Dispatched, Acknowledged, TimeDispatched, Time
FROM `DumpsterDispatch`
WHERE (
Dispatched IS NULL
OR Acknowledged = 'N'
OR TimeDispatched >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
AND Id > 1490
)
ORDER BY Id DESC LIMIT 100;
另一种方法是使用 UNIX_TIMESTAMP()
,它还会给出 UTC 时间戳,就像您的strtotime('-2 hours')
正在做的那样。
$dateVar = 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 UNIX_TIMESTAMP(TimeDispatched) >= {$dateVar}
)
AND Id > 1490
ORDER BY Id DESC LIMIT 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";