我在表格中有一个日期列,我以Y-m-d格式存储日期。我想创建一个find(),例如,那个年份的年份是2016年。就像它不适用于约会。 我发现在纯mysql中我可以做到
select * from your_table where year(date) = 2016
但我怎么能在Yii2上做到这一点?是否有本地方式或我需要进行自定义查询?
P.S。我正在研究Yii2
答案 0 :(得分:0)
试试这个
select * from your_table where YEAR(STR_TO_DATE(date_column, "%Y-%m-%d")) = 2016
或者
select * from your_table where EXTRACT(YEAR FROM date_column) = 2016
答案 1 :(得分:0)
试试这个,
//Using model/Active Record
TableName::find()->where('year(date_column) =:date_column' , [':date_column' => '2016'])->all();
//Using Active Query
Yii::$app->db->createCommand('select * from table_name where year(date_column) = 2016')->queryAll();
更多示例,您可以阅读此http://www.yiiframework.com/doc-2.0/guide-index.html
答案 2 :(得分:0)
您可以使用有效记录:
TableName::find()->where(['YEAR(date)' => 2016])->all();
答案 3 :(得分:0)
你应该把'YEAR(date)'换成这样的条件:
TableName :: find() - > where([new yii \ db \ Expression('YEAR(date)')=> 2016]) - > all();
http://www.yiiframework.com/doc-2.0/yii-db-expression.html#$expression-detail