Seleccione La Fecha DateTime En La Consulta - Yii2

Estoy en uno de la tabla de eventos. En el cual, due date de eventos se almacenan en datetime formato. Pero, debido a algún cambio de requisito, ahora tenemos que mostrar solo date (excluyendo el tiempo) de due date columna.

Evento (Tabla)

id | user_id | description |       due_date          | is_completed

1      8        My Event1    2016-08-09 19:16:00          0
2      8        My Event2    2016-08-09 19:53:00          0

Yo quería mostrar todos los eventos en la fecha sabio. Como todo evento bajo 2016-08-09.

Así que, he probado con esta consulta.

$upcoming_events = Events::find()->select(['due_date'])->distinct()
           ->where(['user_id' => Yii::$app->users->getId(),'is_completed'=> 0 ])
           ->andWhere(['>=','due_date',date("Y-m-d")])
          ->orderBy(['due_date'=>'ASC'])->limit(5)->all();

Pero, ahora 2 fechas están siendo seleccionados como 2016-08-09 19:16:00 & 2016-08-09 19:53:00. Desde entonces, parte de la fecha no se recuperan de la instrucción select. Es mostrando 2 veces la misma fecha.

var_dump($upcoming_events);

[1] => app\Events Object
  (
    [_attributes:yii\db\BaseActiveRecord:private] => Array
        (
            [due_date] => 2016-08-09 19:16:00
        )
  )

[2] => app\Events Object
(

  [_attributes:yii\db\BaseActiveRecord:private] => Array
  (
      [due_date] => 2016-08-09 19:53:00
  )
)

¿Cómo puedo recuperar sólo la fecha a partir de la fecha de campo de tiempo para obtener sólo 1 fecha en Yii2 Consulta.

Cualquier ayuda/sugerencia/sugerencias es apreciable.

  • Respuesta seleccionada
    scaisEdge
    8 de agosto de 2016

    También puede utilizar sólo la parte de la fecha

     upcoming_events = Events::find()->select('date(due_date) as due_date')->distinct()
           ->where(['user_id' => Yii::$app->users->getId(),'is_completed'=> 0 ])
           ->andWhere(['>=','due_date',date("Y-m-d")])
          ->orderBy(['due_date'=>'ASC'])->limit(5)->all();
    

3 Respuestas

  • vijay nathji
    8 de agosto de 2016

    Esta es la consulta por el que se puede obtener de convertir la fecha a partir de la marca de tiempo utilizando Yii2 modelo de consulta.

    $upcoming_events     = Yii::$app->$db->createCommand('SELECT  count(DISTINCT(date(due_date))) as edate FROM event_master')
        ->queryAll();
    
    
        foreach ($upcoming_events as $upevnts){
        echo $upevnts['edate'];
    }
    
  • Nana Partykar
    8 de agosto de 2016

    He buscado por date(due_date) en la consulta activa. No me llega. Así que, he utilizado Generador de Comandos.

    Y, funcionó.

    $upcoming_events_date = Yii::$app->db->createCommand("SELECT DISTINCT date(due_date) FROM events WHERE user_id = :user_id AND is_completed=:is_completed AND  due_date > :due_date ORDER BY due_date ASC LIMIT 0,5")
                                       ->bindParam(':user_id',Yii::$app->users->getId())
                                        ->bindParam(':is_completed',0)
                                        ->bindParam(':due_date',date('Y-m-d'))
                                        ->queryAll();
    

    Pero, incluso a pesar de que funciona. Me gustaría saber la solución en la consulta Activa.

  • Ankit Singh
    4 de mayo de 2019

    Usted puede simplemente utilizar este ejemplo YourModelName::find()->where(['date(timestamp)' => php('Y-m-d')]->one(). De aquí se obtienen de la columna de marca de tiempo.