我有人员表,并在其中有一个名为生日的字段作为时间戳。
当我插入日期数据时:可以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
我猜该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。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。