2016-05-23 4 views
0

DateTimeフィールドをSQLコマンドパラメータとして保存すると、精度が失われることがあります。通常は、ミリ秒未満です。C#DateTime to SQL DateTime精度が失われる

TimeOfDay {16:59:35.4002017}

しかし、そのSqlValueは次のとおりです:パラメータのValueです TimeOfDay {16:59:35.4000000} そして、それがデータベースに保存されていた時間です。

私は特に数マイクロ秒ほどは悩まされませんが、後で値を比較するときに問題を引き起こし、等しくないと表示されます。 (一部の比較では、実行時までフィールドの型がわからないため、特別なDateTime "丸め"ロジックが必要かどうかもわかりません)

パラメータを追加するときにこれを修正しますか?

+0

質問デバッグヘルプ(「なぜこのコードは機能していませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 - テーブル定義がありません。 – TomTom

+0

コードを表示するまでは何も言えません! – techspider

答えて

8

あなたがしてdocumentedである、DateTimeを使用している:あなたはDateTime2をしたいようですね.000の単位に丸め、0.003、または0.007秒

精度:

精度、スケール:0〜7桁、精度は100nsです。デフォルトの精度は7桁です。精度を100nsの

は、(= 100nsの1ティック)

それとも差で暮らすと比較する前にDateTimeを丸めるための方法を記述DateTime同じである - 簡単になってしまうかもしれません。

3

datetime2を使用すると、精度が向上します。