【SQL Server】GETDATE()をLINQから指定

レコードの登録・更新の際はよく登録日時や更新日時をカラムに持たせて記録すると思います。

C#側で現在日時を取得する時は「DateTime.Now」
SQL Server側で現在日時を取得する時は「GETDATE()」

を使うのが一般的だと思いますが、日時判定で処理するようなプログラムを作る際、APサーバーとDBサーバーで日時設定に若干誤差があると上手く動かないケースがあります。

今回僕が陥ったケースとして、基本的にSQL ServerのGETDATE()で日時をセットしているところを、C#でDateTime.NowからLINQのメソッド式を通して日時をセットしたら、APサーバーとDBサーバーの日時誤差で色々ハマってしまいました。

対処方法

LINQでもSQL ServerのGETDATE()を参照して日付をセットします。

APとDBが同じサーバーにあればこんな問題は起こらないでしょうが、大規模システムであればそんな構成はまずないでしょうし、仕様としてどちらの日付を使うかは予め決めておくと良いでしょうね。

一般的にはDBサーバー側を見る方がベターだと思いますが。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUTこの記事をかいた人

子どもが産まれたことをきっかけに働き方を見直し、フリーランスSEになった30代の父親。 埼玉県某市在住。 妻と娘(5歳)とペット(フェレット)で、日々悩みながらも楽しく過ごしています。