Laravel sqlsrv - 无法创建时间戳()

时间:2016-02-17 12:57:30

标签: laravel

我正在将L5.1.x中现有的项目迁移到运行Server 2012和SQL Server 2012的新服务器。

使用表的timestamps()字段时遇到一些问题。生病时加入我的方案:

$table->timestamps();

我得到带有“datetime”类型的created_at和updated_at列。

但是,当生病时尝试将模型添加到此数据库时,我会遇到该错误:

QueryException: Unable to convert an nvarchar Value to and datetime Value ....

生病时禁用模型中的时间戳字段,一切正常:

public $timestamps = false;

..但当然没有created_at和updated_at

的值

我不知道导致这个问题的原因 - 任何想法?我可以手动将created_at和updated_at字段设置为“GETDATE()” - 但我想使用Laravels基本功能。

1 个答案:

答案 0 :(得分:2)

Ok ill发现问题 - Laravel创建了一个格式为的日期时间:

"Y-m-d H:i:s.u"

但SQL Server需要以下格式:

"Y-d-m H:i:s"

因此,当您使用:

更新模型函数时
public function fromDateTime($value)
{
    return Carbon::parse(parent::fromDateTime($value))->format('Y-d-m H:i:s');
}

您可以将日期格式转换为SQL Server的正确值(不知道为什么它的Y-d-m,它不是我的服务器;)