【问题标题】:How to count two related dates in Laravel using Query Builder?如何使用查询生成器计算 Laravel 中的两个相关日期?
【发布时间】:2020-05-04 07:39:30
【问题描述】:

我有这个日期列表

我想连续计算每个日期之间的时间超过 24 小时的次数...试过这个..

$tiempo1  = DB::table('incidencia_tiempo')
            ->whereTime('time', '>', '0000-00-00 24:00:00')
            ->count();

时间和创建时间之间...我想计算...如果两次时间之间的时间大于 24 小时,则将 +1 添加到计数中

我必须与 created_at 和 time 进行比较,我不知道如何

【问题讨论】:

  • 这个问题已经在这里回答了请检查:- stackoverflow.com/questions/45902312/…
  • 是的,但这只是为了计数......我想在两次之间进行比较
  • 好的@Oscar,请提出确切的问题-您的问题是-如何使用查询生成器在 Laravel 中计算日期?
  • 我的错...我编辑了标题..我想知道如何在两个不同的日期之间进行比较...然后进行计数

标签: laravel laravel-query-builder


【解决方案1】:

你的意思是什么时间超过 24 小时

【讨论】:

  • 时间和创建时间之间...我想计算...如果两次时间之间的时间大于 24 小时,则将 +1 添加到计数中
  • 表示如果不同的 timecreated_at 高于 24 小时?
  • 是...我想计算时间和 created_at 之间的差异并计算...差异必须高于 24 小时才能计算
  • 噢噢噢噢噢噢噢噢噢K
【解决方案2】:

试试这个方法来比较和计算日期

$text_count = Text::whereBetween('created_at', [$date1, $date2])->count();

【讨论】:

  • 我怎么能在我的查询中使用它兄弟?
  • 如果您的意思是 tiempo1 计数。 - $tiempo1 = Tiempo1 ::whereBetween('created_at', [$date1, $date2])->count();
【解决方案3】:

首先你必须运行简单的查询来获取所有的数据,比如

$tiempo1  = DB::table('incidencia_tiempo')->get();

并为此查询数据添加一个循环

$count = 0;
foreach($tiempo1 as $time) {
  $start  = new Carbon($time->time);
  $end    = new Carbon($time->created_at);
  $hours = $start->diff($end)->format('%H');

  if ($hours > 24){
    $count++;
  }
}

希望这会有所帮助:)

【讨论】:

  • 我正在用数字进行计数,这就是为什么我使用 ->count();... 所以我不能使用 ->get();因为我得到了所有的日期,但没有得到计数......我怎么能用这种方法使用计数?
【解决方案4】:

使用TIMESTAMPDIFF()获取两个日期时间之间的时间,

如果要算timecreated_at 24 小时高

$count  = DB::table('incidencia_tiempo')
            ->where(DB::raw('TIMESTAMPDIFF(HOUR, time, created_at)'), '>', 24)
            ->count();

如果您想计算两个日期时间之间的时间差大于 24 小时:

$count  = DB::table('incidencia_tiempo')
            ->where(DB::raw('ABS(TIMESTAMPDIFF(HOUR, time, created_at))'), '>', 24)
            ->count();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
相关资源
最近更新 更多