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

Laravel如何根据日期获取最接近的历史数据库数据

修改方案:获取当前日期前最近的历史数据

你可以直接优化数据库查询逻辑,不再固定查询前一天的数据,而是查询小于当前日期的所有同symbol数据,按日期倒序排列后取第一条,这样就能自动拿到最接近当前日期的历史记录。

修改后的代码:

foreach ($file as $row) {
    $current_date = Carbon::createFromFormat('d-M-Y', str_replace(' ', '', $row[2]))->format('Y-m-d');

    // 查询当前日期之前、同symbol的最近一条数据
    $pd = EodBhavData::where('symbol', $row[0])
        ->where('date', '<', $current_date)
        ->orderBy('date', 'desc')
        ->first();

    // 后续的对比计算逻辑...
}

逻辑说明:

  • 去掉了原代码中固定减一天的$previous_date变量,直接通过where('date', '<', $current_date)筛选所有早于当前日期的记录
  • orderBy('date', 'desc')让最新的日期排在最前面
  • first()直接取排序后的第一条,也就是最接近当前日期的历史数据

这样不管当前日期前缺了几天的数据,都会自动找到最近的那一条存在的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:06:02