检索日期中给定年份的所有 ORM 记录

Posted

技术标签:

【中文标题】检索日期中给定年份的所有 ORM 记录【英文标题】:Retrieving all ORM records with a given year in a date 【发布时间】:2013-02-19 19:44:43 【问题描述】:

所以我有一个简单的模型,它有一个 date 属性,它作为 mysql DATE 值(即2013-02-19)存储在数据库中。

检索日期为 2012 年的所有记录的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您可以使用 ORM 查询生成器和 DB::expr() 方法获取 2012 年以来的所有记录:

$year = 2012;

$my_models = ORM::factory('MyModel')
        ->where(DB::expr('YEAR(`date`)'), '=', $year)
        ->find_all();

// $my_models will be a Database_Result object
// To get an array of ORM row objects, simply:
$my_models_rows = $my_models->as_array();

【讨论】:

这正是我想要的!我的 MySQL 生锈了,我忘记了很多东西(比如用单引号括起来的参数)。【参考方案2】:
SELECT * FROM table_name WHERE YEAR(date_column) >= 2012;

【讨论】:

抱歉,我忘了明确说明我正在寻找 ORM 查询解决方案。

以上是关于检索日期中给定年份的所有 ORM 记录的主要内容,如果未能解决你的问题,请参考以下文章

检索给定记录的所有孩子和父母

Laravel Eloquent 在 JSON 列中查找日期在某个范围内的所有记录

年份列与日期范围列的查询性能如何

Kohana ORM 按日期选择记录

SQL Server:如何根据最近的日期时间检索所有记录

如何使用 OracleDataReader 检索给定记录的所有字段?