0

yyyyMMdd日付文字列形式の varchar(8) データ型である特定の日付列を持つ特定のテーブルを持つ大規模な SQL Server データベースを継承しました。なぜそれが日時データ型ではないのか、または同様のものではないのかは私にはわかりません。(おそらくスペースを節約するためですか?レガシーデータベースはずっと前にSQL Serverに移植されましたか?)

以下に示すように、エンティティ フレームワーク (DBContext w/LINQ) を使用すると、この列から 1 つの日付を使用して行を取得するのは非常に簡単です。

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date == myDateStr).ToList();

それはそれが得られるのと同じくらい簡単です。しかし、この列から日付の範囲を取得したい場合はどうすればよいでしょうか? そのようなことをするための最良の方法は何でしょうか?

4

3 に答える 3

5

yyyyMMdd形式の日付は、アルファベット順および数値順に正しく並べられているため、他の文字列列の場合と同じように範囲セレクターを使用できます。

これを試して:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();
于 2012-10-25T19:54:59.057 に答える
1

日付が指定した形式 (例: 20121025) である場合、それらは既に正しくソートされているものとして扱われ、次のように動作するはずです。

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= startDate && x.Date <= endDate).ToList();
于 2012-10-25T19:57:26.463 に答える
0

カスタム形式で datetime の ParseExact メソッドを使用します。次に、式でそれを日時と比較できます。

于 2012-10-25T20:01:53.103 に答える