2016-08-08 13 views
1

Ich habe eine Ereignistabelle. In dem due date des Ereignisses wird in datetime Format gespeichert. Aber wegen einiger Änderung der Anforderung müssen wir jetzt nur date (ohne Zeit) von due date Spalte anzeigen.Wählen Sie Datum von DateTime In Query - Yii2

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 weise alle Ereignis Datum anzuzeigen. Wie alle Veranstaltungen unter 2016-08-09.

Also habe ich mit dieser Abfrage versucht.

$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 werden als 2016-08-09 19:16:00 & 2016-08-09 19:53:00 ausgewählt. Da wird das Datumsteil nicht von der Select-Anweisung abgerufen. Es zeigt 2 mal das gleiche Datum.

var_dump ($ anstehende_Ereignisse);

[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 nur abrufen Datum ab Datum Zeitfeld nur 1 Tag in Yii2 Abfrage zu erhalten.

Jede Hilfe/Hinweis/Vorschläge ist spürbar.

+0

[Verweisen]. (Http://stackoverflow.com/questions/1754411/how-to-select-date-from-datetime-column) –

+0

Müssen Sie das Datum drucken oder Sie müssen Abfrage einchecken ? –

+1

$ Fälligkeitsdatum = Datum ('Y-m-d', Startzeit ($ Modell-> Fälligkeitsdatum)); dann pass $ due_date in die Abfrage –

Antwort

3

Sie können auch nur das Datum 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(); 
+0

Danke Scais. Das ist, wonach ich gesucht habe. –

0

Hier ist die Abfrage, mit der Sie das konvertierte Datum aus Timestamp mit Yii2-Modellabfrage abrufen können.

$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']; 
} 
+0

Nein * vijay * bhai. Wie benutze ich 'Select Date (Fälligkeitsdatum)' in Yii2 Abfrage. Das ist meine Frage. –

0

ich für date(due_date) in aktive Abfrage gesucht verwenden. Ich habe es nicht verstanden. Also habe ich Command Builder verwendet.

Und es hat funktioniert.

$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, obwohl es funktioniert. Ich würde gerne Lösung in Aktive Abfrage wissen.

+0

मदद कक .. खुशखुशल हह .. @Nana –

+0

Ha Ha ': D' Genau @ vijaynathji –