Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select Date From DateTime In Query - Yii2

Tags:

I'm having one event table. In which, due date of event is being stored in datetime format. But, due to some change of requirement, now we need to show only date (excluding time) from due date column.

Event (Table)

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

I wanted to show all event in date wise. Like all event under 2016-08-09.

So, I tried with this query.

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

But, now 2 dates are being selected as 2016-08-09 19:16:00 & 2016-08-09 19:53:00. Since, date part is not being fetched from select statement. It is showing 2 times same date.

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

How can I retrieve only date from date time field to get only 1 date in Yii2 Query.

Any help/hint/suggestions is appreciable.

like image 613
Nana Partykar Avatar asked Aug 08 '16 08:08

Nana Partykar


2 Answers

You can also use only the date part

 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();
like image 150
ScaisEdge Avatar answered Oct 10 '22 22:10

ScaisEdge


You can simply use this example,

YourModelName::find()->where(['date(timestamp)' => php('Y-m-d')]->one(); 

Here date will be fetched from timestamp column.

like image 20
Ankit Singh Avatar answered Oct 10 '22 21:10

Ankit Singh