如何使用Laravel和Eloquent在两个日期时间之间查询,但日期时间没有排序?(error Prepared语句包



背景:数据每分钟从API检索一次,并存储在"传感器"表中。如果数据超过一年。它们将被汇总,保存为数据库中的一个新条目,旧数据将被删除。因此,列"date"未排序。更新到特定日期是不可能的,因为我不能确定传感器当时是否真的生成了数据。

现在我的问题是:我有一个类似的格子

private function getDataFromPeriod()
{
return Sensor::whereBetween('date', [$this->start, $this->end])->orderBy('date')->get();
}

其中$start$end的格式如下,例如:"2022-12-31 01:59:59"。

此函数在函数render()期间被调用,并且有效(在开始时对上一年的数据进行排序)。但是,当我在不同的地方重复调用此函数时,会出现错误1390 Prepared statement contains too many placeholders

我怀疑这是因为查询不好。

有人知道我如何改进查询,或者错误可能在哪里吗?

感谢您的帮助

您不需要按日期排序;只需将您的代码替换为:

return Sensor::where('date','>=', $this->start)->where('date','<=', $this->end)->get();

这条线将为您提供起始日期和结束日期之间的传感器

最新更新