Mysql 当我只有可用的年份时,如何根据datetime字段查询数据库中的行?

Mysql 当我只有可用的年份时,如何根据datetime字段查询数据库中的行?,mysql,yii2,Mysql,Yii2,我需要根据年份从表中选择所有行,但是我可以查询的唯一字段是可以读取的DATETIME字段,例如2020-05-08 14:30:34 我如何返回仅基于年度的条目 $records = MedicalRecord::find() ->where(['dateCreated' => '2020']) ->all(); 您可以使用YEAR()函数,请尝试以下操作: $records = MedicalRecord::find() ->where(['Y

我需要根据年份从表中选择所有行,但是我可以查询的唯一字段是可以读取的
DATETIME
字段,例如
2020-05-08 14:30:34

我如何返回仅基于年度的条目

$records = MedicalRecord::find()
    ->where(['dateCreated' => '2020'])
    ->all();
您可以使用
YEAR()
函数,请尝试以下操作:

$records = MedicalRecord::find()
    ->where(['YEAR(dateCreated)' => 2020])
    ->all();
您可以使用
YEAR()
函数,请尝试以下操作:

$records = MedicalRecord::find()
    ->where(['YEAR(dateCreated)' => 2020])
    ->all();
您可以使用
和where()
并与年初和年末日期进行比较

可能值得记住的是,这相当于将日期作为字符串进行比较,但由于排序是YY-mm-dd,因此它是有效的

$records = MedicalRecord::find()
    ->where(['>=', 'dateCreated', '2020-01-01 00:00:00'])
    ->andWhere(['<', 'dateCreated', '2021-01-01 00:00:00'])
    ->all();
$records=MedicalRecord::find()
->其中(['>=','dateCreated','2020-01-01 00:00:00']))
->andWhere(['您可以使用
andWhere()
并与年初和年末日期进行比较

可能值得记住的是,这相当于将日期作为字符串进行比较,但由于排序是YY-mm-dd,因此它是有效的

$records = MedicalRecord::find()
    ->where(['>=', 'dateCreated', '2020-01-01 00:00:00'])
    ->andWhere(['<', 'dateCreated', '2021-01-01 00:00:00'])
    ->all();
$records=MedicalRecord::find()
->其中(['>=','dateCreated','2020-01-01 00:00:00']))
->在哪里(['对于MySQL,它将是。此外,您的解决方案可能比接受答案中的解决方案更快,因为它可以使用标准索引。另一个解决方案可能需要为
年份设置带有功能键部分的索引。
。对于MySQL,它将是。此外,您的解决方案可能比接受答案中的解决方案更快,因为它可以使用标准索引rd索引。另一个可能需要为
设置带有功能键部分的索引。