在 Laravel 中添加时间到日期查询

Posted

技术标签:

【中文标题】在 Laravel 中添加时间到日期查询【英文标题】:Adding time to date query in Laravel 【发布时间】:2017-10-12 01:19:38 【问题描述】:

我有一个查询,它根据今天的日期获取记录。我的问题是我需要它是今天的日期和时间,而不仅仅是日期。我想获取所有开始日期和时间为今天上午 9:30 而不是上午 12 点的记录。

我使用$today 作为当前日期时间。每次用户加载页面时,都会比较当前日期时间,看是否在注册期限内

   $today = new DateTime('today');

   $programs = ScheduledProgram::where('registration_start_date', '<=', $today)
                                    ->where('end_date', '>=',  $today)
                                    ->get();

我的registration_start_date 字段是date 类型,而不是datetime。但是我的服务器已经充满了数据。

有没有办法可以在查询中添加时间以获取registration_start_date + 9:30

或者我应该运行迁移来更改registration_start_date 的字段类型吗?以及所有基础记录?

【问题讨论】:

【参考方案1】:

您可以为今天创建具有自定义日期和时间范围的变量,例如

$today_start = date('Y-m-d').' 9:30:00';
$today_end = date('Y-m-d').' 18:30:00';

然后在查询中使用这些变量

 $programs = ScheduledProgram::where('registration_start_date', '>=', $today_start)
                                ->where('end_date', '<=',  $today_end)
                                ->get();

请注意,我更改了 > 和

【讨论】:

我们对$today 变量的看法不同。我使用$today 作为当前日期时间。每次用户加载页面时,都会比较当前日期时间,看是否在注册期限内。 对不起,我想也许你是对的......我会尝试并报告。 我们对开始时间的看法不同。它不像你描述的那样工作。我想我需要从$today 中减去 9.5 小时。其余代码可以保持不变。【参考方案2】:

最好选择碳日期。执行以下操作

use Carbon\Carbon

在你的方法中添加这个

$today = Carbon::today()->setTime(9,30,0);

我测试过了。有用。 希望这会有所帮助。

【讨论】:

以上是关于在 Laravel 中添加时间到日期查询的主要内容,如果未能解决你的问题,请参考以下文章

我想自学laraver,请诸位前辈给一些建议,谢谢

Laravel - 如何在忘记密码中添加自定义字段

在 laravel 5.2 中找不到类“Html”

Laravel - 在编辑视图上添加日期验证

如何在 Laravel Rebing GraphQL 中使用“隐私”属性函数?

Laravel 查询生成器介于两者之间