2016-10-07 6 views
1

"2016-10-07 21:00:29:987"のようなミリ秒数のSQL Serverデータベースから日付を使用しています。隠されたフィールドで保持されます。SQLを使用しているときに文字列が有効なDateTimeとして認識されない

これはデータが記録される方法であり、これはデータベース内の更新の句の1つです。

これが正常に動作しますオフ私はミリ秒を削除した場合

var d = DateTime.ParseExact(hfDateLocked.Value.ToString(), "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); 

を使用しているとき、私は試してみて、私はエラー「文字列が有効なDateTimeとして認識されませんされた」GETパラメータとしてデータベースにこれを渡しますが、これはミリ秒単位でデータベースに格納されており、これは3つの節のうちの1つです。

感謝の気持ちで助けてください。

編集1

SqlParameter lockTimParam = new SqlParameter("@LockTime", SqlDbType.DateTime); 

if (string.IsNullOrEmpty(hfLockTime.Value.ToString())) 
{ 
    lockTimParam.Value = DBNull.Value; 
} 
else 
{ 
    lockTimParam.Value = DateTime.ParseExact(hfLockTime.Value.ToString(), "yyyy-MM-dd hh:mm:ss:fff", CultureInfo.InvariantCulture); 
} 
+1

あなたはHH:mm:ss.FFFを試しましたか? – Mate

+1

日付をデータベースに文字列として保存していますか?そんなことしたらダメ! – mason

+0

あなたは 'DateTime'オブジェクト' hfDateLocked'を持っていて、 'DateTime.Parse'を使っていますか?これは意味をなさない。 DateTimeオブジェクトを特定の文字列形式にフォーマットする場合は、 '.ToString'を呼び出して目的の形式を渡すだけです。以下の答えを確認してください。 – user3185569

答えて

1

そのあなたのフォーマット文字列を入力-oが、それは(秒およびミリ秒の間だけシンボル)に渡されるDateTime文字列の形式と一致していません。

.fffは、:fffである必要があります。

var result = System.DateTime.ParseExact("2016-10-07 21:00:29:987", "yyyy-MM-dd HH:mm:ss:fff", System.Globalization.CultureInfo.InvariantCulture); 

それともDateTime文字列が続い.の代わり:を使用するように変更されている場合は、この作品

var result = System.DateTime.ParseExact("2016-10-07 21:00:29.987", "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture); 

いずれにしても。返されたDateTime文字列のミリ秒は、ピリオド(.)で区切られ、コロン(:)がフォーマット文字列に:fffを使用する場合は、フォーマット文字列内で.fffを使用します。

+1

ありがとうございました。 –

関連する問題