首页 > 解决方案 > SQLSTATE [22007]:日期时间格式无效:1292 日期值不正确:laravel 中“日期”列的“1399/06/31”

问题描述

1399/06/31使用 laravel插入有问题SQL,实际上,如果月份的日期是另一个数字31,则没有任何问题。

注意:- 我使用波斯历,而不是公历。

 public function create(Request $request)
 {
     $transferMoney = new TransferMoney();
     $transferMoney->sender_id = Input::get('sender_account_id');
     $transferMoney->receiver_id = Input::get('receiver_account_id');
     $transferMoney->payment_amount = Input::get('payment_amount');
     $transferMoney->rate = Input::get('rate');
     $transferMoney->date = Input::get('pr_date');
     $transferMoney->description = Input::get('transfer_description');

     $transferMoney->save();
 }

标签: sqllaraveldatetime

解决方案


我认为除了常规的公历日期之外,您不能将任何格式保存到 SQL 表中。您可以做的是另存为公历日期,并在检索时使用访问器直接检索为波斯日期。

$transferMoney->date = Carbon::parse(Input::get('pr_date'))->locale('UTC+6');

我找到了一个转换波斯时间的包,我不知道你是否需要它。https://github.com/morilog/jalali

导入后,您可以在 TransferMoney.php 中使用此格式或您想要的格式:

public function getYourDateFieldAttribute($value)
{
    return Jalalian::fromDateTime($value);
}

推荐阅读