0

嗨,我有一个问题,我试图获取作业所花费的总时间(使用数据库字段 job_start 和 job_end time(7)),然后将其添加到另一个模型的字段,

我的代码是

 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 未能执行 SQL 语句:SQLSTATE[22007]: [Microsoft][SQL Server Native Client 11.0][SQL Server]从字符串转换日期和/或时间时转换失败..

关于正确方法的任何想法?即我是否要增加时间并计算差异都错了?

我认为这与将字符串转换为时间格式有关,但我不确定如何执行此操作

4

2 回答 2

0

也许你必须做

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

代替

$diff = $model->job_start - $model->job_end;
于 2013-07-29T14:57:46.670 回答
0

除非您对该模型有附加行为,否则您的 job_start 和 job_end 属性很可能是根据 MSSQL 格式化的字符串,假设列类型是日期/时间表示。这当然是CActiveRecord模型与 MySQL 和 Yii 的 DATETIME 类型一起工作的方式。

要进行差异,您需要先转换。查看CDateFormatter并使用它将您的属性转换为允许算术的数字表示。

如果你不能让 Xdebug 工作,那么花时间让 Yii::log() 函数工作(它会runtime/application.log默认输出到.

于 2013-07-29T21:42:44.240 回答