2017-12-20 26 views
0

私はMS Accessデータベースを持っています。私はそれにアクセスするためにC#でアプリケーションを書いています。私は、「MS AccessでShort Textを。ファイル名フィールド内のデータは以下のようである」タイプのフィールド「FileName」を持っている「Test 11-12-2004 15.11.15SQL:文字列テキストフィールドの日付範囲の比較

日付範囲を使用して、私はfilenameフィールドに基づいてレコードを検索しました。私が取得することはできませんよ - この形式の日付を比較してレコードを取得するにはどうすればよいでしょうか?FileNameはテキスト型で、日付は部分文字列で、日付部分のみを取り出して>= beginDate && <= endDateと比較すると、パズルのようです。この日付範囲の比較を実行し、それらのレコードを取得するためにSQLクエリを書くにはどうすればよいですか?「Select * from TestHead where FileName ......」

助けていただければ幸いです。あなたは、レコードを通過しているとして、私はこのような文字列を分割したい

どうもありがとう、あなたのC#コードで

+1

新しい列の「FileDate」の日付/時刻型をテーブルに追加し、ファイル名に基づいてこの列を埋めます。これは、C#のレコードを使用してサイクリングを1回行うことができます。その後、通常のSQLクエリを使用して高速検索を実行できます。 –

答えて

1

、:

char[] delimiters = {' '}; 
string[] FileNameParts = FileName.Split(delimiters); 

これは、配列FileNamePartsになり、クエリで使用するために実際の日付に変換することができます日付を、含まれていますの第二の要素:の線に沿って

DateTime FileNameDate = Convert.ToDateTime(FileNameParts(1)) 

は何か:

sSQL = "SELECT * FROM Table WHERE " & beginDate & " <= " & FileNameDate 

その後、あなたは常に既存のレコードが変更されたり、新しいレコードが追加されるたびに、その列を更新する必要があるので、私は、filenameフィールドの日付部分文字列が含まれているあなたのテーブルに列を追加するには、このとして好適参照してください。つまり、C#側の混乱や、少なくとも定期的に呼び出される必要があるAccess側のクエリUPDATEを意味します。いずれにしても、データベースとの通信が増えます。

+0

ありがとうございました。はい、新しい列の値を更新することはより問題になります。これは私を助けません。 Convert.ToDateTeimeではなく、DateTime.TryParseExactを使用する必要がありました。convertはbeginDate&endDateとは異なる形式を使用していました。しかし、3つの日付イベントすべてに対して同じフォーマットを設定するようにしてください。結果として全く不一致は生じない。どうもありがとう。 –

関連する問題