![](/img/trans.png)
[英]SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value
[英]Timestamp being saved as DateTime by Laravel - SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value:
我从前端收到一个日期,需要将其保存为 UNIX 时间戳在我的 Laravel API 上。 日期将采用YYYY-MM-DD hh:mm
格式,或者只是简单的日期为YYYY-MM-DD
在我的 model 中,我定义了修改器和访问器来将日期转换为时间戳,反之亦然。 从我在文档和在线阅读的内容来看,这是正确的方法。
public function setStartAttribute($value)
{
$this->attributes['start'] = strtotime($value);
}
public function getStartAttribute($value)
{
$value = Carbon::createFromTimestamp($value)->toDateTimeString();
return $value;
}
我在迁移中也将这些字段定义为timestamp
......
$table->timestamp('start')->nullable()->default(null);
最后是 controller 创建条目...
$entry = entry::create([
'name' => $request->name,
'description' => $request->description,
'type' => $request->type,
'start' => $request->start,
]);
但是每当我尝试创建新条目时,我仍然会收到错误SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '1615381200' for column 'start' at row 1
。 为什么在我将其转换为时间戳后尝试将其保存为datetime
时间值?
MySQL 时间戳不同于 PHP 中的时间。 The format of a time in PHP is seconds since UNIX epoch, but a MySQL is just a formatted datetime in the range '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07'世界标准时间。 也许这是以相同的方式存储的,但要保存它,你可以给它一个日期时间字符串。 在您的情况下,您可以省略突变器,它会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.