2013-07-29 2 views
0

Привет, У меня есть проблема, когда я пытаюсь получить общее время выполнения задания (используя поля базы данных job_start и job_end time (7)) затем добавив в поле другой модели,Вычисление разницы между двумя временами с использованием php, а затем добавление его к общему типу времени

код, который я есть в

if (isset($_POST['Jobs'])) { 

     $model->attributes = $_POST['Jobs']; 
     $model->setScenario('closejob'); 
     $model->status = 2; //set status to closed 

     //date time difference - this is the part I need help with 
     $diff = $model->job_start - $model->job_end; 
     //need to get customer model and add time diff to it 
     $customermodel = Customers::model()->findByPk($model->customer_ID); 
     $customermodel->total_time = $customermodel->total_time + $diff; 
     $customermodel->save(); 



     if ($model->save()) 
      $this->redirect(array('view', 'id' => $model->job_ID)); 
    } 

Я попытался строку с другими функциями даты и времени, но безрезультатно, приведенный выше код выдает следующее сообщение об ошибке

CDbCommand faile d для выполнения инструкции SQL: SQLSTATE [22007]: [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Ошибка конверсии при преобразовании даты и/или времени из строки символов.

Любые идеи по правильному пути сделать это ? i.e я собираюсь добавить время и вычислить различия все неправильно?

Я думаю, что это что-то делать с преобразованием строки в формат времени, но я не уверен, как это сделать

+0

точно, как вы хранить эти значения даты/времени? " символьная строка "предполагает, что вы используете varchar или пытаетесь передать недопустимые форматы строки даты. –

+0

@MarcB все они хранятся в базе данных как время (7) – user1652319

ответ

0

Может быть, вы должны сделать

$diff = $model->job_end - $model->job_start; 

Вместо

$diff = $model->job_start - $model->job_end; 
+0

да, вы правы в этой части, спасибо. t думаю, что это проблема, поскольку я обновил ее, и я все еще получаю ошибку – user1652319

+0

У вас есть результат '$ diff'? Это строка, int, float? – Damien

+0

Я изо всех сил пытаюсь свалить vars в yii, ничего не работает , я бы использовал xdebug, но он не работает в iis, я знаю что, когда время отображается в приложении, они находятся в следующем формате: «14: 00: 00.0000000», если это какая-либо помощь – user1652319

0

Если у вас нет привязанного поведения для этой модели, вполне вероятно, что ваши атрибуты job_start и job_end являются строками, которые отформатированы в соответствии с MSSQL, предполагая, что типы столбцов являются датами представление e/time. Это, безусловно, способ, которым модели CActiveRecord работают с MySQL и Yii с типом DATETIME.

Чтобы сделать различия, вам нужно будет перенести сначала. Взгляните на CDateFormatter и используйте его для преобразования ваших атрибутов в числовые представления, которые допускают арифметику.

Если вы не можете получить Xdebug работать, а затем тратить время на получение функцию Yii :: Журнал() работает (он будет выводиться runtime/application.log по умолчанию.

Смежные вопросы