MySQl:如何对 ('year' )具有日期格式的列进行分组,忽略月份和日期

标签 mysql laravel-5 eloquent

我正在使用 Laravel 构建一个应用程序。我正在使用 Eloquent 和 MySql 数据库。在我的 MySQL 数据库中,我有一个如下表 EVENTS:

id  EVENT   YEAR
1   event1  2000-05-27
2   event2  2018-01-01
3   event3  2000-02-12
4   event4  2000-06-03

这个例子只是为了简单起见,显然我的数据库随时发生数百个事件。

年份列中的数据采用“日期”格式

我需要从这个 MySQL 表中获取每年发生的事件的简历。在这个例子中是

year    number of events
2000    3
2018    1

我这样做了:

$years = Event::groupBy('year')
                    ->selectRaw('count(*) as total, year')
                    ->get();

我明白了:

year    number of events
2000    1
2018    1
2000    1
2000    1

因为列中的每个日期都不同(在示例表中:2000-02-12 !== 2000-06-03 !== 2000-05-27)。

我需要将每年发生的所有事件组合在一起,而不考虑月份和日期。

问题是:

即使事件发生在不同的日期和月份,如何按“年份”列分组但仅考虑年份?

最佳答案

既然您使用了 selectRaw,那么只需将日期转换为年份,这样您就可以像普通查询一样进行分组。

$years = Event::selectRaw('count(*) as total, YEAR(year) as year')
    ->groupBy('year')
    ->get();

关于MySQl:如何对 ('year' )具有日期格式的列进行分组,忽略月份和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640937/

相关文章:

mysql - 在包含 BLOB 字段的数据库表上选择查询非常慢

php - mysql - 选择对多个表进行计数、按周分组、自定义日期范围

php - 在 Laravel/Eloquent 中返回多个而不是一个

database - 删除超过 60 分钟的 Elequent 记录

php - 广告权重,让广告商分得一杯羹

sql - mysql数据库并发访问问题

php - php中的更新查询有什么问题

php - 更改文件夹结构以删除公用文件夹时对 Laravel 5 安全性的影响

php - 如何使用 jwt-auth 对 Facebook 用户进行身份验证?

error-handling - Laravel自定义错误消息