从查询中的日期 属性 获取年份

Getting the year from a date property in a query

我知道我可以像这样使用碳从数据中得到一年。

这将获取当前年份。

$current = Carbon::now();
$year = Carbon::createFromFormat('Y-m-d H:i:s', $current)->year;

我有一个查询可以获取用户的所有约会。我需要获取当前日历年的所有约会。

我有以下查询

$appointments = Appointments::where('id', $id)
                            ->where('event_end_time', '<', $current)
                            ->count();

如何查看活动结束时间(日期)年份。例如,如果日期是 11-05-2018,我可以只获取年份 (2018) 并检查约会是否发生在 2018 年

Laravel 的查询生成器包含一个方法:

whereYear('event_end_time', $year)

原始 SQL 这是 where year(event_end_time) = ?

您也可以使用SQLDATE_FORMAT函数。

$appointments = Appointments::where('id', $id)
                        ->where(DB::raw('DATE_FORMAT(event_end_time, "%Y-%m-%d")), '<', $current)
                        ->count();

我认为这比通过 php 计算日期更好,因为它是由数据库完成的。

DATE_FORMAT docs