2016-02-17 71 views
1

我在迁移的L5.1.x现有PROJEKT到新的服务器与服务器2012和SQL Server中运行2012Laravel SQLSRV - 无法创建时间戳()

我使用时间戳时有一些问题()字段的表。生病时加入我的计划:

$table->timestamps(); 

生病得到,类型为“日期时间”的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基本功能。

+0

在您的连接设置中,您将驱动程序设置为'sqlsrv'并且您具有正确的默认连接设置? – user3158900

+0

当然,他们已经发现问题(10小时后);) – derdida

回答

2

好病中发现的问题 - 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的正确值(dont知道为什么它的Y-D-M,它不是我的服务器;))