首页 > 社区问答列表 >如何检查日期是否在将来,对于分开的日期和时间列?

  如何检查日期是否在将来,对于分开的日期和时间列?

我有两列用于存储日期:一列是以YYYY-mm-dd格式表示的日期本身,另一列是以time(7)数据类型表示的时间,例如11:15:10.0000000。

我该如何检查未来的行?

我可以得到第一部分,即日期本身:


MyModel::where('date', '>=', Carbon::today())->get()

但是当我尝试添加时间时,它不起作用:

MyModel::where('date', '>=', Carbon::today())->where('time', '>', Carbon::now()->format('H:i'))->get()

因为它们是分开的,所以即使日期在未来,时间也是分开的,所以可能会出现时间不匹配的情况。所以我需要以某种方式将日期和与之相关的时间合并在一起,而不是分开。

P粉021854777
P粉021854777

  • P粉651109397
  • P粉651109397   采纳为最佳   2023-08-01 16:21:09 1楼

    尝试将两个列合并为一个条件。

    $now = Carbon::now();
    
    MyModel::whereRaw("CONCAT(`date`, ' ', `time`) >= ?", [$now->toDateTimeString()])->get();

    对于 SQL Server,请尝试以下操作。

    MyModel::whereRaw("CONVERT(datetime, date + ' ' + CONVERT(varchar, time, 121)) >= ?", [$now->toDateTimeString()])->get();

    查询转换可能需要更新,请查阅文档以获取更多信息。

    +0 添加回复