【问题标题】:Laravel 5.7: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '35492' for column 'resident_dob' at row 1Laravel 5.7:SQLSTATE [22007]:无效的日期时间格式:1292 不正确的日期值:第 1 行的列“resident_dob”的“35492”
【发布时间】:2019-08-11 20:39:03
【问题描述】:

我正在尝试导入一个包含一些数据的 excel 文件,但发生了错误

SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期值:第 1 行的列“resident_dob”的日期值是“35492”

起初我猜测可能是excel文件中的数据,我注意到它的格式与SQL中的格式不匹配,所以我尝试更改它但同样的错误已经发生。顺便说一句,这是Excel File Data

这是模型的代码:

public function model(array $row)
{
    return new Resident([
        'resident_fname' => $row[0],
        'resident_lname' => $row[1],
        'resident_mi'    => $row[2],
        'resident_dob'   => $row[3],
        'role'           => $row[4],
        'resident_age'   => $row[5],
        'resident_address'  => $row[6],
        'resident_contact'  => $row[7],
        'resident_email'    => $row[8],
        'resident_purok'    => $row[9],
        'resident_status'   => $row[10],
        'resident_gender'   => $row[11],
        'resident_religion' => $row[12],
        'ResidentVoter_status'  => $row[13],
    ]);
}

我真的不知道如何处理这个错误。谁能帮我这个?我还是 Laravel 的新手。

【问题讨论】:

    标签: excel laravel import laravel-5.7


    【解决方案1】:

    问题是 SQL 不支持您在 excel 中输入的日期格式(除非更改了默认配置)

    默认情况下,SQL 可以将您的日期存储为 1997-03-03 00:00:00,在 PHP 日期格式中转换为 Y-m-d H:i:s

    因此您需要手动将其转换为预期的格式,或者使用 DateTime 或 laravel 的 Carbon 包。下面我用的是碳

    在顶部声明这个

    use Carbon;
    

    现在转换日期

    'resident_dob' => Carbon::parse($row[3])->format('Y-m-d H:i:s');
    

    【讨论】:

    • 效果很好!对于日期类型,我必须将其格式化为“Y-m-d”
    • @SalimDjerbouh 根据carbon.nesbot.com/laravel 的 Carbon 文档,“只要您需要存储日期(有或没有时间),就应该存储完整的日期时间”。
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    相关资源
    最近更新 更多