2

DateTimeOffset(2) 型の CreatedDate フィールドを持つ SQL Server テーブルがあります。
表にあるサンプル値は 2010-03-01 15:18:58.57 -05:00 です。

例として、C# 内からこの値を次のように取得します。

var cmd = new SqlCommand("SELECT CreatedDate FROM Entities WHERE EntityID = 2", cn);  
var da = new SqlDataAdapter(cmd);  
DataTable dt =new DataTable();  
da.Fill(dt);

そして、次の値を確認します。
MessageBox.Show(dt.Rows[0][0].ToString());

結果は 2010-03-01 15:18:58 -05:00 で、データベースに格納されている .57 がありません。

ウォッチ ウィンドウで dt.Rows[0][0] を見ると、.57 も表示されないため、切り捨てられているように見えます。

誰かがこれに光を当てることができますか? データベース内の他のレコードと一致させるために日付を使用する必要があり、.57 が必要です。

ありがとう!
ダービス

4

2 に答える 2

1

SQL Server にはミリ秒の精度がありません。

詳細については、次の記事を参照してください。

高度な SQL Server の DATE および DATETIME 処理

編集

C# が同じ動作を示すべきではないと思います。DateTime.ToString()Format Provider を指定しない限り、メソッドにはミリ秒が含まれないことに注意してください。

ウォッチ ウィンドウにも表示されますToString()。ブレークポイントを設定し、インスペクターを使用して保存されているより詳細な情報を取得し、ミリ秒単位であるかどうかを確認してください。

于 2010-03-18T14:49:40.223 に答える
0

Fillは、データセット内のデータをデータソース内のデータと一致するように変更する必要があります。他のクラスが希望する形式でデータを取得するかどうかを確認するために、他の方法でデータを取得しようとしましたか?sqldatasource/gridviewなどの簡単なテスト

于 2010-03-18T14:51:46.927 に答える