You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel查询中如何将分钟转毫秒并添加Where条件筛选?

问题分析与修正

你的查询逻辑存在明显错误:第一个where条件把**分钟数类型的event_start_waiting_time和毫秒级时间戳$currentTimestamp**直接比较,两个值单位完全不匹配,导致筛选逻辑失效,返回空结果。

正确的筛选逻辑应该是:当前时间必须处于活动的可开始时间范围内——即当前时间 ≥ 活动开始时间(event_time),且当前时间 ≤ 活动开始时间 + 等待时长(转成毫秒)。

修正后的代码

$currentTimestamp = time() * 1000; 
$activities = Activity::where('event_time', '<=', $currentTimestamp)
    ->whereRaw('(event_time + (event_start_waiting_time * 60 * 1000)) >= ?', [$currentTimestamp])
    ->get();

逻辑说明

  • 第一个条件where('event_time', '<=', $currentTimestamp):确保当前时间已经过了活动的开始时间(符合“下午5:00开始”的起始要求)
  • 第二个whereRaw条件:计算活动的最晚可开始时间(event_time + 等待分钟数转毫秒),确保当前时间还没超过这个最晚时间(符合“到5:30之间”的结束要求)

验证示例

假设当前时间对应的毫秒时间戳是1685945141000(处于running活动的event_time1685944961000加上30分钟的时间范围内),修正后的查询会正确返回running活动。

内容的提问来源于stack exchange,提问作者Shiffali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:22:06