对于我在Laravel应用程序中的Log模型,我正在尝试选择“在特定差异内按顺序排列”的所有记录。我的意思是选择所有的结果日志,只要对于给定的datetime列,前一条记录和下一条记录之间的差异就在给定的时间差限制之内。
请参阅下面的查询和一些虚构的语法,以使我的意图得到理解。
Log::query()
->whereDateDiff('created_at', '<', '2 hours') // This method does not exist.
->get();因此,假设我有以下数据。在这里,我想选择第4行之前的记录,包括第4行,因为第4行和第5行之间的时间差大于2小时。
----------------------------
| id | created_at |
----------------------------
| 1 | 2022-11-17 08:01:52 |
| 2 | 2022-11-17 08:31:14 |
| 3 | 2022-11-17 09:02:49 |
| 4 | 2022-11-17 09:03:30 |
| 5 | 2022-11-17 16:21:12 |
| 6 | 2022-11-17 17:01:27 |
----------------------------我在互联网上搜索了一种雄辩方法,但我还没有找到定义某种查询的方法。从此堆栈溢出问题(“连续行之间的日期差异”)学习,我们知道如何在SELECT语句中计算SQL中连续行之间的差异,但我想在WHERE中使用这个方法。我希望这在一个查询中是可能的,最好是使用一个雄辩的语法,但恐怕这只能在PHP层中实现。解决这个问题的最佳方法是什么?
发布于 2022-11-17 15:02:25
我试着用一个以上的条件来解决这个问题。例如:
Log::where('created_at', '>=', $from)->where('created_at', '<=', $to)->get();我想,生成$from和$to变量并不困难。其中一个是你想要的特定时间,然后使用碳,你可以提供另一个变量。然后,您可以在查询中提供它们。
https://stackoverflow.com/questions/74473512
复制相似问题