如何在 Laravel 中格式化 SQL Server 的日期时间?

Ale*_*ada 3 sql-server datetime laravel

我试图格式化日期时间值以laravel使它们与sql server格式匹配,我收到此错误:

找不到分隔符号 发现意外数据。发现意外数据。追踪数据

我在我的模型中使用自定义格式:

protected $dateFormat = 'd-m-Y H:i:s';
Run Code Online (Sandbox Code Playgroud)

它适用于控制器的创建方法,没有问题,尝试更新时会发生错误,我认为与值在数据库中的存储方式有关。

使用tinker,我在模型中检索了updated_at 的值,并以以下格式显示:

updated_at: "2018-07-24 09:14:09.000"
Run Code Online (Sandbox Code Playgroud)

因此,当我更新此值时,使用的格式是:

protected $dateFormat = 'd-m-Y H:i:s';
Run Code Online (Sandbox Code Playgroud)

我认为它应该是类似的东西,d-m-Y H:i:s.000但不起作用,我该如何解决这个问题?

dns*_*_nx 5

laravel当切换到版本时,我遇到了完全相同的问题5.6。现在我找到了处理这个问题的正确方法。

创建一个Base像这样的类并添加一个public方法getDateFormat。你返回的日期有点不同

return 'Y-d-m H:i:s.v';
Run Code Online (Sandbox Code Playgroud)

看到日期 ( d) 和月份 ( m) 已切换,最后您需要添加.v代表毫秒的 a 。这对我来说效果很好。在这里查看我的完整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;
}
Run Code Online (Sandbox Code Playgroud)