【问题标题】:Change date format to save it in database by Laravel 5.8通过 Laravel 5.8 更改日期格式以将其保存在数据库中
【发布时间】:2020-01-04 11:52:55
【问题描述】:

我是 Laravel 的新手;

我正在使用 Data Packer Jquery,它的输出格式如下:

2019 年 8 月 14 日

我通过此代码将其保存在数据库中:

if ($request -> isMethod('post')) {
        $data = $request -> all();
        $course = new Courses;
        $course -> start_date = $data['start_date'];
        $course -> save();
        return redirect('/admin/courses');
    }

但是我发现了这个错误:

SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期值:第 1 行的列 'start_date' 的日期值不正确:'14-Aug-2019'

【问题讨论】:

标签: laravel


【解决方案1】:

MySQL 期望日期类似于2019-08-14,而您正在尝试保存14-Aug-2019。所以你得到了错误。您可以通过从前端发送确切的格式化日期或在后端解析它来解决它。

从日期选择器发送Y-m-d

$( "#date" ).datepicker({
   dateFormat: 'yy-mm-dd',
});  

它会像2019-08-14一样发送日期,你可以直接保存它。

如果您想使用14-Aug-2019 之类的格式,则必须使用 Carbon 解析它,以便将其保存在数据库中。

use Carbon\Carbon;
$date = '14-Aug-2019';
$d = Carbon::parse($date)->format('Y-m-d'); //return date 2019-08-14

将您的start_date 作为模型中的日期。它将帮助您随意格式化。

class Courses extends Model
{
    protected $dates = ['start_date'];
} 

【讨论】:

  • 谢谢伙计,它可以在没有“将 start_date 作为模型中的日期转换为日期”的情况下工作
【解决方案2】:

希望对你有用

    if ($request -> isMethod('post')) {
        $data = $request -> all();
        $course = new Courses;
        $course -> start_date = STR_TO_DATE($data['start_date'], '%d-%M-%Y');
        $course -> save();
        return redirect('/admin/courses');
    }

【讨论】:

  • STR_TO_DATE 不是 php 函数。
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 2019-08-29
  • 2017-04-13
  • 2012-01-27
  • 2020-01-15
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
相关资源
最近更新 更多