如何解决如何使用存储为毫秒的日期起的月份对月份进行分组
我有一个parking_session表,其中包含start_time字段和end_time字段,两个字段都存储为毫秒。我需要获取按月,年或日期分组的停车会话总数。我该如何在Laravel中做到这一点?
我的表格如下所示:
,预期结果为:
+----------+---------------+
| month | park_sessions |
+----------+---------------+
| January | 13
+----------+---------------+
| February | 23 |
+----------+---------------+
| --- | ---- |
+----------+---------------+
我尝试过的是
$sessions_all = DB::table('parking_sessions')
->pluck('start_time');
$d = null;
foreach($sessions_all as $key){
$d[] = \Carbon\Carbon::createFromTimestampMs($key)->format('Y-M-d');
}
dd(array_count_values($d));
解决方法
您可能可以在MySQL中执行此操作:
$result = DB::table('parking_sessions')
->selectRaw('MONTHNAME(FROM_UNIXTIME(start_time * 0.001)) as month,COUNT(*) as park_sessions')
->groupBy('month')
->get();
dd($result);
要将年份包括在分组中(或按任何日期格式分组),可以使用DATE_FORMAT
$result = DB::table('parking_sessions')
//notice the change to double quotes
->selectRaw("DATE_FORMAT(FROM_UNIXTIME(start_time * 0.001),'%M-%Y') as month,COUNT(*) as park_sessions")
->groupBy('month')
->get();
dd($result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。