如何在数据库中添加当前时间戳。格式是什么?

时间:2014-12-09 11:48:56

标签: yii2

我想在将新记录插入数据库时​​将当前系统时间添加到数据库中,如“time_created”列中所示。 PHP的time()函数在yii2中没有支持。我想要yii2特定的时间功能,这将帮助我保存当前的时间戳。谁知道????

6 个答案:

答案 0 :(得分:9)

Yii 2对此有特殊行为。只需将其附加到模型上即可。 将此项添加到您的模型behaviors()方法:

use yii\behaviors\TimestampBehavior;
use yii\db\Expression;

public function behaviors()
{
    return [
        // Other behaviors
        [
            'class' => TimestampBehavior::className(),
            'createdAtAttribute' => 'time_created',
            'updatedAtAttribute' => false,
            'value' => new Expression('NOW()'),
        ],
    ];   
}

答案 1 :(得分:6)

您还可以使用Yii2 formatter,如下所示:

Yii::$app->formatter->asTimestamp(date('Y-d-m h:i:s')); //1410488596
Yii::$app->formatter->asDatetime(date('Y-d-m h:i:s')); //Sep 12, 2014, 2:21:56 AM

答案 2 :(得分:5)

也许这是旧的,但它可能会帮助其他人。在模型中添加以下代码。确保将createdAttribute更改为您的属性。您还必须包括:

use yii\behaviors\TimestampBehavior;
use yii\db\Expression;

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

答案 3 :(得分:5)

您可以使用 yii \ db \ Expression 来执行SQL函数

<?php
use yii\db\Expression;

$model->time_created = new Expression('NOW()');
$model->save();

答案 4 :(得分:1)

您可以简单地使用PHP的date()函数 - date('Y-m-d H:i:s');

答案 5 :(得分:0)

有几种方法可以添加时间戳,我建议使用UNIX时间戳来处理时区。例如,在Google SQL实例中,您无法设置时区,而是设置偏移量,这意味着由于夏季/冬季时间,您需要每年更新两次偏移量。因为有人提到你也可以使用行为:

let bankRates = zip(amounts, rates).map(BankRate.init)

或者你可以简单地在插入之前添加,比如public function behaviors() { return [ [ 'class' => AttributeBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => 'entry_date', ], 'value' => function ($event) { return time(); }, ], ]; } ,但是你会在每个$model->entry_date=time();上执行此操作,那么行为是更好的选择。

当然,如果您想阅读格式化日期,可以使用:

INSERT

对于asDate格式化程序,您可以在这里阅读:    http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDate()-detail