2009-05-28 12 views
2

こんにちは、TimespanObj.ToString()を使用すると、12:33:00のような完璧な出力が得られます。LINQクエリの文字列問題へのタイムスパン

私は以下のlinqクエリを使用します。

var time = SomeSimpleQuery.Select(t => new { time = t.FromTime.ToString() }); 

ここで、FromTimeは、LINQ-TO-SQLクラス(既定値)のSQL DatabaseとTimespanの時間(7)です。

次に、「jan 1 1900 12:00 PM」のような形式の出力が得られます。どうして?

答えて

4

クエリの「ToString」部分が.NETではなくSQLで実行されていると思われます。実行中のSQLをチェックすることでこれを確認できるはずです。

FromTimeプロパティを直接取得してから、代わりにToString()を呼び出してみてください。

var query = SomeSimpleQuery.Select(row => new { UserId=row.UserId, 
               Query=row.Query, 
               Time=t.FromTime }) 
          .AsEnumerable() 
          .Select(t => new { t.UserId, t.Query, 
               Time=t.FromTime.ToString() }); 
:あなたが他のものを取得したい場合は

var time = SomeSimpleQuery.Select(t => t.FromTime) 
          .AsEnumerable() 
          .Select(t => new { time = t.ToString() }); 

、ちょうどを通してそれらを渡す:あなたはLINQクエリでそれをすべてを維持したい場合はAsEnumerableを使用して、.NET側で実行する処理を強制することができます

+0

良い! SQL側で変換できますか?私は他のインフォメーションも取り込んでいるからです。時間だけではありません。 – Vikas

+0

残りの情報はすべて同時に取得しますが、クライアント側でToString処理を行い、残りのデータはすべて同じにします。私はあなたがSQL側で、特にLINQからそれをフォーマットする方法についてはわかりません。私は答えを編集して、私が意味することを示します。 –

+0

とてもうれしく説明してくれてありがとう。このような説明がもっと必要です。 –

1

timespan型のSQLを呼び出すことはありません。時間は単純に1日の時間部分になります。

MSDNから、(時間のデータ型):

は、一日の時間を定義します。時刻は で、タイムゾーンの認識はなく、 (24時間制)です。

+0

私はMS SQL2008を使用し、FromTimeはTime(7)のタイプです。次に、LINQ-to-SQLクラスを使用し、FromTimeはTimespanのタイプになります。 – Vikas

関連する問題