Yii2 - 使用yii / db / Expression选择月份和年份

时间:2017-06-24 07:41:31

标签: mysql yii

在常见查询中,我们可以使用像

这样的查询来选择记录或大量记录
SELECT * FROM tagihan_cleaning 
   WHERE YEAR("ditagihkan_bulan") = 2017  AND 
         MONTH("ditagihkan_bulan") = 06

现在,在yii2中,我有一个dateInput,即06-2017。 然后,如何使用Activerecord只是查询上面。到目前为止,我想这样:

 TagihanCleaning::find()->where([
               'ditagihkan_bulan' => MONTH('ditagihkan_bulan')
            ])->all();

请告知

2 个答案:

答案 0 :(得分:1)

你可以使用directQuery:

Yii::$app->db->createCommand('SELECT * FROM tagihan_cleaning 
   WHERE YEAR("ditagihkan_bulan") = 2017  AND 
         MONTH("ditagihkan_bulan") = 06')
            ->queryAll();

准备好声明:

$post = Yii::$app->db->createCommand('SELECT * FROM tagihan_cleaning WHERE YEAR("ditagihkan_bulan")=:year AND MONTH("ditagihkan_bulan")=:month')
           ->bindValue(':year', '2017')
           ->bindValue(':month', '06')
           ->queryOne();

答案 1 :(得分:1)

假设你的dateinput是字符串名称$ your_date_input,对于activeRecord,你可以使用  一升在哪里和绑定

  TagihanCleaning::find()->where(' YEAR("ditagihkan_bulan") = YEAR(str_to_date(:your_date_input1, "%m-%Y")
                  AND MONTH("ditagihkan_bulan") = MONTH(str_to_date(:your_date_input2, "%m-%Y") )
            ->bindValue(':your_date_input1', $your_date_input)
            ->bindValue(':your_date_input2', $your_date_input)
            ->all();