在 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 中添加时间到日期查询的主要内容,如果未能解决你的问题,请参考以下文章