我有一个jquery datepicker
$(function() {
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var currentYear = date.getFullYear();
$('.datepicker').datepicker({
showOn: 'focus',changeMonth: true,
minDate: new Date(currentYear, currentMonth, currentDate),
changeYear: true,
});
});
进行一些验证
$this->validate($request, [
"date" => 'required|date',
]);
和一些转换为日期以传递到数据库
$date = $request->input('date');
$date2 = DateTime::createFromFormat('m/d/Y',$date);
$date3 = $date2->format("Y-d-m");
如果我此时dd($ date3),选择日期,我会得到类似的东西
"2016-29-09"
一切都很好,mysql似乎以y-d-m格式保存。
现在我要通过
Message::where('id', $messageId)->update([
'updated_at' => Carbon\Carbon::now(),
'subject' => 'Status: Price quote delivered.',
'quoted' => 1,
'price' => $request->input('price'),
'estimated_date' => $date3,
]);
除了日期之外,所有内容都会传递到数据库。这个日期只停留在数据库中的。
帮助?
答案 0 :(得分:3)
请注意,您将日期保存为YEAR-DAY-MONTH
,而DATE
的正确格式为YEAR-MONTH-DAY
。
另请注意,$date3
的值为" 2016-29-09",这会在您的表中插入值" 0000-00-00"由于月份值无效且月份的正确范围为(1-12),数据类型为DATE
。
<强>解决方案:强>
您需要根据列的数据类型更改日期格式(YEAR-MONTH-DAY)。
$date3 = $date2->format("Y-m-d"); // something like 2016-09-26
您还可以参考以下内容: http://dev.mysql.com/doc/refman/5.7/en/datetime.html
答案 1 :(得分:2)
兄弟,请检查以下一行:
一切顺利,mysql似乎以y-d-m格式保存。 现在,当我通过
时Mysql默认格式为
Y-M-d
不是
的y d-M
更改格式,然后重试。
答案 2 :(得分:2)
你要做的就是:
自:
$date3 = $date2->format("Y-d-m");
要:
$date3 = $date2->format("Y-m-d");
答案 3 :(得分:1)
我看到你正在使用一个javascript日期对象,然后它在Laravel中验证,你为什么不使用Carbon?如果验证日期,那么让Carbon和Laravel处理所有日期工作,而不是重新发明轮子:
$date = new \Carbon\Carbon($request->input('date'));
Message::where('id', $messageId)->update([
'updated_at' => Carbon\Carbon::now(),
'subject' => 'Status: Price quote delivered.',
'quoted' => 1,
'price' => $request->input('price'),
'estimated_date' => $date,
]);