我想使用select选项显示从表
的created_at列中获取的月份// item_ins
+----+--------+---------------------+
| id | item | created_at |
+----+--------+---------------------+
| 1 | item 1 | 2017-12-11 10:37:52 |
| 2 | item 2 | 2017-12-11 10:38:17 |
| 3 | item 3 | 2018-01-12 01:28:43 |
| 4 | item 4 | 2018-01-12 01:30:14 |
| 5 | item 5 | 2018-02-12 01:30:05 |
| 6 | item 6 | 2018-02-12 01:30:42 |
+----+--------+---------------------+
表中有两个月的12月,1月和2月,我希望每个月都有一个,我试试这个
$months= ItemIn::distinct('created_at')->pluck('created_at');
但我每个月仍然会得到相同的两个月,因为时间不一样,如下所示
并且我仍然对如何获得一个月感到困惑,因为通过上述方式我也得到了数年和数天
[
{
"date": "2017-12-11 10:37:52.000000",
"timezone_type": 3,
"timezone": "UTC"
},
{
"date": "2017-12-11 10:38:17.000000",
"timezone_type": 3,
"timezone": "UTC"
},
{
"date": "2018-01-12 01:28:43.000000",
"timezone_type": 3,
"timezone": "UTC"
},
{
"date": "2018-01-12 01:29:14.000000",
"timezone_type": 3,
"timezone": "UTC"
},
{
"date": "2018-02-12 01:30:05.000000",
"timezone_type": 3,
"timezone": "UTC"
},
{
"date": "2018-02-12 01:30:22.000000",
"timezone_type": 3,
"timezone": "UTC"
},
]
答案 0 :(得分:2)
如果时间不存在问题,您可以在使用选择查询本身时处理此问题,如果您选择使用子字符串。
select id, item, SUBSTRING(created_at, 1, 11) as created_at
from test
group by created_at;
答案 1 :(得分:1)
将CAST与原始查询结合使用,以获得您想要的结果,
$data = \DB::table('item_ins')
->select(\DB::raw('CAST(created_at as date) as created_at'))
->distinct('created_at')->get();
您可以在此处查看文档https://github.com/NuGet/Home/issues/5688
我希望你能理解。
答案 2 :(得分:1)
使用 Carbon
在视图中对其进行格式化{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
或在模型中使用accessors重新格式化日期字段
public function getCreatedAtAttribute($value) {
return \Carbon\Carbon::parse($value)->format('m');
}
然后$model->created_at
将采用所需的格式
答案 3 :(得分:0)
使用protected $date;
public function __construct($attributes = array(), Request $request){
parent::__construct($attributes);
$this->date = Carbon::parse($request->toDate)->format('Y-m-d');
}
:
groupBy()