laravel中的默认时间戳(保存到db时的默认时间戳)是什么格式?

问题描述 投票:1回答:2

我将为数据库保存一个额外的时间戳:last_sent

我想以与默认时间戳(created_at和updated_at)相同的方式保存它-这意味着我将像这样迁移它:

$table->timestamp('last_sent')->nullable(有时将为null。)

我的问题是我应该将哪种时间值格式保存到此列?

我找到了两个选项,但不确定什么是正确的:

Carbon\Carbon::now()->toDateTimeString();

或只是

Carbon\Carbon::now();

保存日期和时间以使其像默认时间戳一样的正确方法是什么?

php laravel php-carbon
2个回答
1
投票

我认为这是Mysql问题...

根据mysqltutorial

MySQL TIMESTAMP是一种临时数据类型,它保存日期和时间的组合。 TIMESTAMP的格式为YYYY-MM-DD HH:MM:SS,固定为19个字符。

因此,默认值为YYYY-MM-DD HH:MM:SS

这就是时间戳存储在db中的方式...

并且如果您找出什么$ table-> timestamps();做它的:

 public function timestamps($precision = 0)
    {
        $this->timestamp('created_at', $precision)->nullable();

        $this->timestamp('updated_at', $precision)->nullable();
    }

所以:laravel默认保持精度为= 0的Mysql格式 如果您想像默认的laravel时间戳一样存储列,可以:

 $this->timestamp('last_sent',0)->nullable();

您可以忽略第二个参数

对于您列的值:

Carbon\Carbon::now()->toDateTimeString(); 

这不会做,因为它是简单的字符串而不是日期

但是这就足够了:

$value=Carbon\Carbon::now();

尽管$ value将在毫秒内保留四个数字,但由于我们的迁移中(精度为0,这些数字在db中将被忽略...


0
投票

通常为YYYY-MM-DD Hour:Min:Sec格式。为了使您清楚,我将为此添加一个屏幕截图。enter image description here

希望对您有帮助。

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