php - 错误地将小时添加到 MySQL 表列时间戳 Laravel

标签 php mysql sql laravel laravel-5.5

我需要获取 3 种类型的记录才能向这些记录发送提醒,首先我需要在记录创建 24 小时后发送提醒,然后在 48 小时后发送提醒,最后在 72 小时后发送提醒。

到目前为止,我已经这样做了,但它似乎无法正常工作,因为,假设记录是在 2019-06-10 19:00:00 创建的,当时当天是2019-07-10 00:01: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();

我该如何解决这个问题?

个人资料。您可以忽略不涉及日期的其余查询链。

最佳答案

可能是因为你使用了whereDate。 whereDate 方法可用于将列的值与日期进行比较。 引用:https://laravel.com/docs/5.8/queries -> 哪里日期。 我认为你应该只使用 where 而不是 whereDate。这将为您提供当前输出。

关于php - 错误地将小时添加到 MySQL 表列时间戳 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56537056/

相关文章:

php - MySQL Rank 我的总分

mysql - SQL 语法错误和事件无法启动

mysql - 使用 SQL 选择与其他表值匹配的计数值

javascript - Sequelize.js 一对多关系外键

mysql - 由于这些错误,无法继续进行 drupal 安装

IF 语句中的 SQL SELECT 语句

php - MYSQL 使用 IF 语句进行查询

php - 如何开发一个易于本地化的webapp系统?

php - 递归 PHP PDO POST 插入

java - Hibernate org.hibernate.MappingException 用于非注释字段