PHP
SQLServer
Laravel

LaravelでSQL Server使用時、datetime2を使いたい場合


困った!

LaravelでSQL Server使用時、created_atやupdated_at、またその他のカラムで日付データをdatetime2型を指定しなければならない!でもInsert/Update処理がうまくいかない!よくわからないエラーが出る!

あとなんか知らんけどdebugbarも動かない!

ネットで近い情報を調べると

protected $dateFormat = 'Y-m-d H:i:u';

にしろとかいう情報もあるけど、やってもだめだ!


datetime2って?

正確に書くとdatetime2(7)。

YYYY-MM-DD hh:mm:ss[.fractional seconds] という形式の日時の型。

小数点以下は7桁で、精度は100nsです。

2019-04-23 19:41:12.1234567 みたいな感じです。

簡単にいうと「マイクロセコンドではありません!」

ですので、uの指定じゃ不足です。


じゃどうすればいいの?

modelで、

protected $dateFormat = 'Y-m-d H:i:u0';

を指定!(末尾の0で桁を合わせる)

これで解決したよ。