Wählen Sie Das Datum Aus DateTime In Abfrage - Yii2

Ich habe eine Ereignis-Tabelle. In die due date der event wird gespeichert in datetime - format. Aber bedingt durch einige Wechsel der Voraussetzung, jetzt müssen wir zeigen nur date (ohne Zeit) von due date Spalte.

Ereignis (Tabelle)

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

Ich wollte zeigen alle Termin in den weisen. Wie alle Veranstaltungen unter 2016-08-09.

So, ich habe versucht, mit dieser Abfrage.

$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();

Aber jetzt 2 Termine ausgewählt werden als 2016-08-09 19:16:00 & 2016-08-09 19:53:00. Da das Datum teilweise nicht abgerufen, aus der select-Anweisung. Es zeigt 2 mal das gleiche Datum.

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
  )
)

Wie kann ich abrufen, nur Datum von Datum-Uhrzeit-Feld, um nur 1 Datum in Yii2-Abfrage.

Jede Hilfe/Tipp/Vorschläge, ist bemerkenswert.

  • Ausgewählte Antwort
    scaisEdge
    8. August 2016

    Sie können auch verwenden Sie nur den date-Teil

     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 Antworten

  • vijay nathji
    8. August 2016

    Hier ist die Abfrage, indem Sie die können Sie das konvertierte Datum aus timestamp mit Yii2-Modell Abfragen.

    $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. August 2016

    Ich suchte für date(due_date) in der aktiven Abfrage. Habe ich nicht bekommen. Also benutzte ich den Befehl Builder.

    Und, hat Es geklappt.

    $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();
    

    Aber, auch wenn es funktioniert. Ich würde gerne wissen, Lösung in der Aktiven Abfrage.

  • Ankit Singh
    4. Mai 2019

    Sie können einfach verwenden Sie in diesem Beispiel YourModelName::find()->where(['date(timestamp)' => php('Y-m-d')]->one(). Hier Datum, wird der Wert von timestamp-Spalte.