douliao7930 2019-04-30 03:58
浏览 47
已采纳

如何在sql查询时添加额外的分钟数据类型

I want to add extra 30mins to "daily_attendances.in_time" while counting "delay day". Any idea how to do that?

$attendance_list = DB::table('daily_attendances')
        ->join('employees', 'employees.card_id', '=', 'daily_attendances.card_id')
        ->select('daily_attendances.*','employees.basic_salary','employees.start_time','employees.over_time_rate',
            DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.delay_time ) ) ) AS delay_time'),
            DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.extra_time ) ) ) AS extra_time'),
            DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.in_use_time ) ) ) AS duty_time'),
            DB::raw('count(daily_attendances.start_time < daily_attendances.in_time) AS delay_day'),
            DB::raw(DB::raw('count(*) as present_day')))
        ->whereRaw($where)
        ->groupBy('daily_attendances.card_id')->get();
  • 写回答

1条回答 默认 最新

  • doufenzhu7012 2019-04-30 04:40
    关注

    For this case we have to use MySQL function called DATEADD

    Example:

    SELECT DATE_ADD("2017-01-15 02:12:19", INTERVAL 30 MINUTE);
    

    Output:

    2017-01-15 02:42:19
    

    I have modified your query, Please try it out.

    $attendance_list = DB::table('daily_attendances')
      ->join('employees', 'employees.card_id', '=', 'daily_attendances.card_id')
      ->select('daily_attendances.*','employees.basic_salary','employees.start_time','employees.over_time_rate',
          DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.delay_time ) ) ) AS delay_time'),
          DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.extra_time ) ) ) AS extra_time'),
          DB::raw('SEC_TO_TIME( SUM( TIME_TO_SEC( daily_attendances.in_use_time ) ) ) AS duty_time'),
          DB::raw('count(DATE_ADD(daily_attendances.start_time, INTERVAL 30 MINUTE) < daily_attendances.in_time) AS delay_day'), //change over here
          DB::raw(DB::raw('count(*) as present_day')))
            ->whereRaw($where)
            ->groupBy('daily_attendances.card_id')->get();
    

    You can also refer to the link

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误