im尝试以laravel
格式设置日期时间值以使其与sql server
格式匹配,我收到此错误:
找不到分隔符号。找到意外的数据。 找到意外的数据。追踪数据
我在模型中使用自定义格式:
protected $dateFormat = 'd-m-Y H:i:s';
它对于create方法con控制器运行良好,没有问题,尝试更新时会发生错误,我认为与值在数据库中的存储方式有关。
使用修补程序,我在模型中检索了update_at的值,并以以下格式显示:
updated_at: "2018-07-24 09:14:09.000"
因此,当我更新此值时,使用的格式为:
protected $dateFormat = 'd-m-Y H:i:s';
我认为应该是d-m-Y H:i:s.000
之类的东西,但是不起作用,我该如何解决呢?
答案 0 :(得分:1)
您正在使用哪个版本的Laravel?这已在依赖PHP 7的最新发行版(无法确切记住哪个版本)中得到修复。
dateFormat应该为"Y-m-d H:i:s.v"
。 v是毫秒(PHP 7.0.0中已添加)。返回更新/插入的模型时,导致您遇到更新和插入问题。它被传递给Carbon以将日期和日期时间字段转换为Carbon的实例,但是日期时间字段具有'trailing
答案 1 :(得分:1)
切换到laravel
版本5.6
时,我遇到了完全相同的问题。现在,我找到了解决此问题的正确方法。
像这样创建一个Base
类,并添加一个public
方法getDateFormat
。
在那里,您返回的日期有些不同
return 'Y-d-m H:i:s.v';
请注意,日期(d
)和月份(m
)已切换,最后需要输入.v
,代表毫秒。这对我来说很好。在这里查看我完整的Base
类:
<?php
namespace App\Models\Base;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
public function getDateFormat()
{
return 'Y-d-m H:i:s.v';
}
public $timestamps = false;
}
答案 2 :(得分:0)
您也可以在SQL /选择查询中尝试这一操作:
\ DB :: raw(“ DATE_FORMAT(comments.date,'%d-%m-%Y%H:%i:%s')作为sth_date”)
例如:
Comment::orderBy('date','desc')->with('user')
->join('users','comments.id_user', '=', 'users.id')
->select('users.username', 'comments.id', 'comments.id_race', 'comments.status', 'comments.ip_address', 'comments.id_user',
\DB::raw ("DATE_FORMAT(comments.date,'%d-%m-%Y %H:%i:%s') as sth ") );
答案 3 :(得分:-3)
时间分数是数据库的配置,您可以在下面看到它,因此您可以尝试打开数据库。
https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
但是使用 $ d-> format(“ Y-m-d H:i:s.u”)之类的东西,您可以使用Datetime()类进行格式化/操作。