当我将这些值插入数据库表时,我收到此错误:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '24/06/2017' for column 'registration_from' at row 1 (SQL: insert into `campus_registrations` (`campus_major_class_id`, `registration_from`, `registration_to`, `testing`, `announcement`, `enrollment_from`, `enrollment_to`, `updated_at`, `created_at`) values (3, 24/06/2017, 27/06/2017, 13/07/2017, 01/08/2017, 05/09/2017, 31/01/2018, 2017-06-07 09:39:31, 2017-06-07 09:39:31))
我是否必须先开始约会时间或什么?
答案 0 :(得分:6)
由于您没有使用标准日期时间格式,因此每个日期都会define a mutator。例如:
public function setRegistrationFromAttribute($value)
{
$this->attributes['registration_from'] = Carbon::parse($value);
}
答案 1 :(得分:5)
错误在于:
Incorrect datetime value: '24/06/2017' for column 'registration_from' at row 1
mysql中date
列的默认格式为Y-m-d
,而datetime
的默认格式为Y-m-d H:i:s
。因此,请将您的日期更改为此格式,然后重试。
答案 2 :(得分:2)
尝试从vue js前端向laravel后端API注册用户时遇到相同的错误。
解决方案是将mysql严格模式更新为false。如果有人知道这种方法的弊端,请留下您的评论!
//config/database.php
'mysql' => [
'strict' => false,
]
答案 3 :(得分:1)
我遇到了同样的问题,最后我解决了这个问题。您可以在add.blade.php的末尾添加几行代码
$('.date-picker').datepicker({
format: 'yy/mm/dd',
autoclose: true,
todayHighlight: true
});
答案 4 :(得分:0)
MYSQL以YYYY-MM-DD
或YY-MM-DD
格式识别日期值。您可以使用/
。此24/06/2017
被视为无效。试试2017/06/24
答案 5 :(得分:0)
这是在laravel 5.6下发生的,直到我将代码更改为
$table->date('last_date')->default(now());
答案 6 :(得分:0)
别忘了Y2K38(2038年的问题)-
timestamp
的限制为1970-01-01 00:00:01
UTC到2038-01-19 03:14:07
UTC(源),而dateTime
的范围为1000-01-01 00:00:00
到9999-12-31 23:59:59
,因此在确定使用哪种类型之前,请考虑计划在该字段中存储什么。
timestamp
和dateTime
类似-它们将日期(YYYY-MM-DD)
和时间(HH:MM:SS)
一起存储在一个字段中,即YYYY-MM-DD HH:MM:SS
。两者之间的区别在于,无论何时更新数据库记录,时间戳都可以使用(MySQL的)CURRENT_TIMESTAMP
作为其值。这可以在数据库级别进行处理,非常适合Laravel的created_at
和updated_at
字段。
date仅存储日期成分,即YYYY-MM-DD
(1000-00-01
至9999-12-31
)。
timestamps
不带参数,这是将created_at
和updated_at
时间戳字段添加到数据库中的快捷方式。
因此将时间戳记上的日期设置为大于2038-01-19 03:14:07 UTC
的日期也会引发-SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value
答案 7 :(得分:0)
$table->dropColumn('time_to_deliver');
$table->time('time_to_deliver')->nullable()->after('date_to_deliver');
$orderLcl = new Order;// a Model
$orderLcl->time_to_deliver = date("H:i",$mock_timestampLcl);
.....
$orderLcl->save();
答案 8 :(得分:0)
如果该列的默认设置为 NULL,您可能可以在代码中执行以下操作:
$model->column = NULL;