首页 > 解决方案 > Laravel 8 - SQL Server 日期类型(不是日期时间)解析错误

问题描述

我想格式化date从数据类型为date(不是datetime)的 SQL Server 获取的位置。

我试过在模型中添加日期转换,如下所示:

class MyModel extends Model
{
    protected $casts = [
        'date' => 'date:Y',
    ];
}

但有一个错误:

无法解析“2021 年 4 月 20 日 12:00:00:AM”:DateTime::__construct():无法在位置 20 (:) 解析时间字符串(2021 年 4 月 20 日 12:00:00:AM)

当我将 SQL Server 中的数据类型更改为 时datetime,效果很好。

我尝试过任何解析方法(在访问器中)使用 Carbon 或date('d-m-Y', strtotime($date)),当数据类型为 时仍然存在错误,date但当数据类型为datetime.

有什么建议么?谢谢。

标签: sql-serverlaravel

解决方案


所以我创建了一个访问器来操作date字符串而不是格式化它。

public function getDateAttribute($date)
{
    $date = explode(' ', $date);
    return date('Y', strtotime($date[1].$date[0].$date[2]));
}

推荐阅读