Php 日期之间的Laravel搜索日期相同时无结果(从今天获取结果)
我有一个Php 日期之间的Laravel搜索日期相同时无结果(从今天获取结果),php,laravel,date,between,Php,Laravel,Date,Between,我有一个约会表,其中我将约会开始日期和时间存储在日期时间字段中。我有一系列的方法,我使用这些方法来获得在特定日期或两个给定日期之间开始的约会。例如: 日历类: public function today() { $start = Carbon::now()->hour('00')->minute('00')->second('00'); $end = Carbon::now()->hour('23')->minute('59')->second
约会表
,其中我将约会开始日期和时间存储在日期时间
字段中。我有一系列的方法,我使用这些方法来获得在特定日期或两个给定日期之间开始的约会。例如:
日历类:
public function today()
{
$start = Carbon::now()->hour('00')->minute('00')->second('00');
$end = Carbon::now()->hour('23')->minute('59')->second('00');
return Appointment::getAppointments($this->start, $this->end);
}
// public function tomorrow();
// public function thisMonth();
任命模式:
public static function getAppointments($start, $end)
{
return static::whereBetween('date', array(
$start->format('Y-m-d H:i'),
$end->format('Y-m-d H:i')
))->get();
}
如您所见,我需要设置小时、分钟和秒,因为如果开始日期和结束日期相同,否则它将不会返回任何结果。是否可以简单地执行以下操作,并且仍然从该日期获得结果
public function today()
{
$start = Carbon::now();
$end = Carbon::now();
return Appointment::getAppointments($this->start, $this->end);
}
public static function getAppointments($start, $end)
{
return static::whereBetween('date', array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
}
请尝试以下代码
return static::whereBetween(Db:raw('DATE(date)'), array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
这会将DATETIME字段强制转换为DATE请尝试以下代码
return static::whereBetween(Db:raw('DATE(date)'), array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
这会将DATETIME字段转换为DATE我认为问题在于,如果要比较日期之间的日期字段,则最有可能需要截断日期字段中的时间部分 确保导入控制器顶部的db命名空间
use DB;
这会将日期转换为Y-m-d,因此它会介于您的日期之间
public static function getAppointments($start, $end)
{
return static::whereBetween(DB::raw('CAST(date as DATE)', array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
}
我认为问题在于日期字段很可能有一个时间分量,如果要比较日期之间的时间分量,则需要截断该分量 确保导入控制器顶部的db命名空间
use DB;
这会将日期转换为Y-m-d,因此它会介于您的日期之间
public static function getAppointments($start, $end)
{
return static::whereBetween(DB::raw('CAST(date as DATE)', array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
}
我实际上是用它来搜索生日的,但是按月份和日期。我不知道这样的约会我也可以用这个。太棒了,谢谢你:)我实际上是用这个来搜索生日的,但是是按月份和日期。我不知道这样的约会我也可以用这个。真棒,谢谢:)非常感谢,回答也很好:)非常感谢,回答也很好:)