错误地将小时数添加到 MySQL 表列时间戳 Laravel
Posted
技术标签:
【中文标题】错误地将小时数添加到 MySQL 表列时间戳 Laravel【英文标题】:Wrong addition of hours to a MySQL table column timestamp Laravel 【发布时间】:2019-10-25 11:36:33 【问题描述】:我需要获取 3 种类型的记录才能向这些记录发送提醒,首先我需要在创建记录的 24 小时后发送提醒,然后在 48 小时后,最后在 72 小时后发送提醒。
到目前为止,我已经这样做了,但它似乎无法正常工作,因为假设当当前日期变为 2019-07-10 00:01:00
时在 2019-06-10 19:00:00
创建了一条记录,它似乎认为好像已经过去了 24 小时:
$fecha_hoy = Carbon::now();
$solicitudes_24 = SolicitudUser::whereDate(DB::raw('DATE_ADD(created_at, INTERVAL 24 HOUR)'), '<', $fecha_hoy)
->whereDate(DB::raw('DATE_ADD(created_at, INTERVAL 48 HOUR)'), '>', $fecha_hoy)
->whereNull('recordatorio_estado')
->whereHas('curso', function($query)
$query->whereHas('operativo', function ($q)
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
);
)
->where(function($query)
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
)
->get();
$solicitudes_48 = SolicitudUser::whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 48 HOUR)'), '<', $fecha_hoy)
->whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 72 HOUR)'), '>', $fecha_hoy)
->where(function($query)
$query->where('recordatorio_estado', 1)
->orWhereNull('recordatorio_estado');
)
->whereHas('curso', function($query)
$query->whereHas('operativo', function ($q)
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
);
)
->where(function($query)
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
)
->get();
$solicitudes_72 = SolicitudUser::whereDate(DB::raw('DATE_ADD(tblusersSolicitudes.created_at, INTERVAL 72 HOUR)'), '<', $fecha_hoy)
->where(function($query)
$query->where('recordatorio_estado', 2)
->orWhereNull('recordatorio_estado');
)
->whereHas('curso', function($query)
$query->whereHas('operativo', function ($q)
$q->whereDate('dateOfertaAcademicaOperativoFechaRegistroFin', '>', Carbon::now());
);
)
->where(function($query)
$query->where('registro_completo', 0)
->orWhereNull('registro_completo');
)
->get();
我该如何解决这个问题?
警察局。您可以忽略不涉及日期的其余查询链。
【问题讨论】:
【参考方案1】:可能是因为您使用了 whereDate。 whereDate 方法可用于将列的值与日期进行比较。 参考:https://laravel.com/docs/5.8/queries -> whereDate。 我认为你应该只使用 where 而不是 whereDate。这会给你当前的输出。
【讨论】:
以上是关于错误地将小时数添加到 MySQL 表列时间戳 Laravel的主要内容,如果未能解决你的问题,请参考以下文章
如何将 C# DateTime 转换为 MySQL 时间戳表列
Google Apps 脚本 - 将 n 小时添加到当前时间和日期