2016-02-17 69 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,它不是我的服務器;))