开发者社区> 问答> 正文

无效的日期时间格式:1292使用旧日期时

我有人员表,并在其中有一个名为生日的字段作为时间戳。

当我插入日期数据时:可以2017-05-19,没有错误,但是当我想插入一些旧日期时,1959-08-12它说:

Invalid datetime format: 1292 Incorrect datetime value: '1959-08-12' for column 'birthday' at row 1 我要插入这样的日期:

Person::create([ ... 'birthday' => date('Y-m-d' , strtotime($birthday)), ... ]) 我也尝试这个问题/答案,并NO_ZERO_IN_DATE,NO_ZERO_DATE从sql_mode变量中删除,但对我不起作用。

MySQL:5.7.23 PHP:7.2 Laravel:6.5

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-14 18:08:40 881 0
1 条回答
写回答
取消 提交回答
  • 我猜该birthday列的数据类型TIMESTAMP的范围是1970年1月1日00:00:01到2038-01-19 03:14:07(UTC)。

    create table t(birthday timestamp); insert into t values ('1970-01-02'); /* Affected rows: 1 Found rows: 0 Warnings: 0 Duration for 1 query: 0.094 sec. / insert into t values ('1969-12-30'); / SQL Error (1292): Incorrect datetime value: '1969-12-30' for column 'birthday' at row 1 */ 我建议DATE为生日使用数据类型,因为它不包含时间部分,并且具有较大的范围1000-01-01至9999-12-31。

    2019-11-14 18:08:54
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载