プロシージャ(または挿入の場合は列のデフォルト)で設定することに投票します。区別するためにマイクロ秒の精度が必要でない限り、この情報のすべてをすべてのレイヤーに渡す理由はありません。ユーザーがボタンをクリックしたときと、トランザクションがデータベースでコミットされたとき。これは、分散アプリケーションを使用している場合に特に当てはまります。すべてのWeb /アプリケーションサーバーの同期に依存しますか?クライアント/サーバーアプリのエンドユーザーワークステーションを気にしないでください。異なるデータセンターにサーバーがあり、すべてが異なるタイムゾーンであり、DSTを監視しているサーバーもあれば、監視していないサーバーもあります。DateTime.UtcNow
これらの違いのほとんどを消し去るはずですが、それでも理由もなくすべてのデータを渡すことに戻ります。データベースはそれが何時かを知っています。値を保存し、そのすべてのロジックをアプリケーションから除外します。
(また、UTC時刻を保存している場合、本当にDATETIMEOFFSET
が必要ですか。 ?その場合でも、この情報がどのタイムゾーンからのものであるかを手順が知るための何らかの方法が必要です。そうでない場合は、おそらくSMALLDATETIME/DATETIME/DATETIME2
を使用する必要があります。 必要な精度によって異なります。)