【问题标题】:Adding time to date query in Laravel在 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 的字段类型吗?以及所有基础记录?

【问题讨论】:

    标签: php mysql laravel laravel-4 laravel-query-builder


    【解决方案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);
    

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

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2021-10-13
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2016-08-15
      相关资源
      最近更新 更多