为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 根据每个日期计算记录

Laravel 根据每个日期计算记录

PHP
SMILET 2023-08-19 14:15:16
在我的数据库中我有类似的记录**my_table_name**id      date_column               status1       2020-07-21 00:29:05       done2       2020-07-21 21:29:05       done3       2020-07-21 21:35:05       failed4       2020-07-22 10:29:05       done5       2020-07-22 10:35:05       done6       2020-07-22 10:37:05       failed7       2020-07-22 10:39:05       failed8       2020-07-22 10:40:05       done使用 laravel 查询我想要这样的结果array(    [0]=>array(        'date'=>'2020-07-21',        'failed'=>1        'done'=>2     ),   [0]=>array(        'date'=>'2020-07-22',        'failed'=>2        'done'=>3     ))我怎样才能做到这一点?我努力了$record=DB::table('my_table_name')                    ->select(                            DB::raw("DATE_FORMAT(date_column, 'Y-m-d') as date"),                            DB::raw("SUM(status= 'failed') as failed"),                            DB::raw("SUM(status= 'done') as done"),                            )                    ->where('date_column','>=','2020-07-21 00:00:00')                    ->where('date_column','<=','2020-07-22 23:59:59')                    ->groupBy(DB::raw("DATE_FORMAT(date_column, 'Y-m-d')"))                    ->get();提前致谢
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您的代码似乎没问题,但使用日期格式“Ymd”而不是“%Y-%m-%d”,这是错误的。

为了解决您的问题,请使用以下查询:

DB::table('my_table_name')::select(
            DB::raw("DATE_FORMAT(date_column, '%Y-%m-%d') as date"),
            DB::raw("SUM(name= 'failed') as failed"),
            DB::raw("SUM(name= 'done') as done"),
            )
            ->whereDate('date_column','>=','2020-07-21')
            ->whereDate('date_column','<=','2020-07-22')
            ->groupBy(DB::raw("DATE_FORMAT(date_column, '%Y-%m-%d')"))
            ->get();


查看完整回答
反对 回复 2023-08-19
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信