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

问题描述 投票:8回答:6

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

yii2
6个回答
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()'),
        ],
    ];   
}

6
投票

您也可以使用Yii2formatter,如下所示:

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

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()'),
        ],
    ];
}

5
投票

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

<?php
use yii\db\Expression;

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

1
投票

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


0
投票

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

public function behaviors()
{
    return [
        [
           'class' => AttributeBehavior::className(),
           'attributes' => [
               ActiveRecord::EVENT_BEFORE_INSERT => 'entry_date',
           ],
           'value' => function ($event) {
               return time();
           },
        ],

    ];
}

或者你可以简单地在插入之前添加,比如$model->entry_date=time();但是你会在每个INSERT上做到这一点然后行为是更好的选择。

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

\Yii::$app->formatter->asDate($model->entry_date);

对于日期格式,您可以在这里阅读:qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.