我将为数据库保存一个额外的时间戳:last_sent
我想以与默认时间戳(created_at和updated_at)相同的方式保存它-这意味着我将像这样迁移它:
$table->timestamp('last_sent')->nullable
(有时将为null。)
我的问题是我应该将哪种时间值格式保存到此列?
我找到了两个选项,但不确定什么是正确的:
Carbon\Carbon::now()->toDateTimeString();
或只是
Carbon\Carbon::now();
保存日期和时间以使其像默认时间戳一样的正确方法是什么?
我认为这是Mysql问题...
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中将被忽略...