首页 > 解决方案 > 将碳从字符串保存到 MySQL

问题描述

我无法将时间戳保存到我的 MySQL 数据库。在这种情况下,用户在文本字段中写入日期,格式为 dd/mm/yyyy,我希望将其保存为时间戳。

问题是,它总是抱怨格式不正确。

到目前为止,我已经尝试过:

$d = DateTime::createFromFormat("d/m/Y H:i:s", $request['b_date'] . " 00:00:00");

// or
$d = Carbon::parse($request['b_date']);

// or

$d = Carbon::createFromFormat("d/m/Y H:i:s", $request['b_date'] . " 00:00:00");

// so that I can
$p->b_date = $d;

但它永远不会让我保存它。这是日志:

[2019-05-29 15:14:02] local.ERROR: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '1111-11-11 00:00:00' for column 'b_date' at row 1 ...

几个小时以来,我一直在尝试这样做。我错过了什么?

'1111-11-11 00:00:00' 怎么会是一个无效的日期时间值呢?

标签: phpmysqllaravel

解决方案


在迁移脚本中将数据类型声明为 DateTime 对我有用。

    ...

    Schema::create(...

        $table->dateTime('b_date'); // use dateTime instead of timestamp

        ...

在控制器中使用碳进行设置:

...

$p->b_date = Carbon::createFromFormat("d/m/Y H:i:s", $input['b_date'] . " 00:00:00");

...

推荐阅读