2012-01-19 5 views
1

ASP.NET C#のようにSQLから返される奇妙な日付に対処する方法:MM:私のSQLデータソースにss.nnnを私はYYYY-MM-DD HHの日付フォーマット持っ

私はデータを見ますSSMSでは

正常に見えるが、私は私のC#での戻り値を取得するときには、次のようになります。

40927,7895138889 

が、ソースの値は次のとおりです。

2011-12-29 21:52:47.427 

私はこれを前に見たことがありません、何が起こっているかもしれないかについて誰かに助言できますか?

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

編集:私はSQL Serverの2005年の私のasp.net MVC 1.0 nerddinnerチュートリアルサイトにこの値を返すのです

+0

SQLデータソース?なぜあなたは 'asp.net-mvc'であなたの質問にタグをつけましたか?あなたは 'asp.net'を意味しましたか?私はあなたがしたことを願っています/あなたが正しくあなたの質問を取り返してくれることを願っています。そして、あなたが本当に 'asp.net-mvc'を意味していたら、なぜASP.NET MVCアプリケーションでSQLデータソースを使用しているのですか? –

+0

SSMSに表示される元のDateTime値は何ですか? – Joe

+0

DBスキーマとSQL DataSourceのプロパティを表示するのはどうですか?また、あなたの文化の小数点区切り文字 "、"は?そうであれば、その数は分数とともに日数である可能性があります。 –

答えて

2

日付がSQLで数値として格納されている、(私は1753年に考えて)いくつかの開始日を過ぎ日数xは。どういうわけか、返された日付の値をfloatフィールドに格納しているようです。それは1月1日を示す、0を返します

select cast(cast('1/1/1900' as dateTime) as float) 

このSQLコマンドを試してみてください(1753年1月1日を過ぎて40927日)あなたの40927 1753年1月1日に追加してみてください、あなたは右の値

を取得するかどうかを確認、1900が最初の日付です。私はフィールドの型が日付と時刻を格納するsmalldatetimeとdatetime型の精度よりも精度が低いと思われます。このデータ型の有効な日付範囲は、1900年1月1日から2079年6月6日までです。

数値は1900年1月1日より前の日数を表します。小数点部分は時間部分です。これを試してください:

select cast(40927.7895138889 as dateTime) 
関連する問題