使用DB表达式或PHP datetime作为时间戳?

时间:2015-05-22 13:19:02

标签: yii2

我有一个时间戳行为(yii2),看起来像这样(取自用户指南示例)......

public function behaviors()
{
    return [
            'timestamp' => [
                    'class' => TimestampBehavior::className(),
                    'value' => new Expression('NOW()'),
            ],
         ];
}

但使用PHP DateTime表达式是不是更好......

'value' => (new /DateTime('NOW'))->format('Y-m-d H:i:s')

对我来说似乎最好使用一个时钟而不是两个时钟(如果数据库服务器是独立的,时间不同步,这是不可能的。)特别是如果我在我的代码中使用DateTime检查其他条件。

哪种方法更好,为什么?

1 个答案:

答案 0 :(得分:1)

Expression类在SQL查询中创建了一个DBMS函数,无论您在列中使用哪种日期类型(或格式,可以强制某些DBMS中的日期格式),它都可以正常工作。如果更改行为的值,则应注意列的格式和类型是否匹配,否则有时会出错。