2016-09-01 13 views
0

私はCSVファイルをデータテーブルにエクスポートしています。輸出はうまくいきます。使用しているプロバイダーはMicrosoft.ACE.OLEDB.12.0ですcsvファイルの日付からの文字列をC#Windowsアプリケーションで読み取る

問題は、私は単一引用符と一緒に文字列の日付を含む日付の列を持っている、私は一重引用符を削除した、日付形式はこのようです: "2015 -05-02 12:57:43.888 "

この日付をdd/MM/yyy形式に変換する必要があります。

私は機能を変換使用してみましたが、それはエラーを示しています

未定義の機能私は日付に基づいてCSVファイルをフィルタリングする必要があるので、私は日付を変換する必要があり表現

に変換しますCSV自体。次のように

私のコードは次のとおりです。

string header = isFirstRowHeader ? "Yes" : "No"; 

string pathOnly = Path.GetDirectoryName(path); 
string fileName = Path.GetFileName(path); 

string sql = @"Select * From " + 
    " (SELECT ['TRANSACT'] AS InvNo,['TIMESTART'] AS InvDate,['STATUS'] AS InvStatus,['NETTOTAL'] AS InvNet ,['FINALTOTAL'] " + 
    " AS InvFinal,REPLACE(['TIMESTART'],'''','') as TIMESTART FROM [" + fileName + "]) Table1 " + 
    " WHERE convert(varchar(10),TIMESTART,103) between '" + strFrom + "' and '" + strTo + "'"; 

using (OleDbConnection connection = new OleDbConnection(
      @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathOnly + 
      ";Extended Properties=\"Text;HDR=" + header + "\"")) 
using (OleDbCommand command = new OleDbCommand(sql, connection)) 
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) 
{ 
    adapter.Fill(dataTable); 
} 

答えて

0

を見て、私は答えを見つけました。 私はMicrosoft.ACE.OLEDBドライバを使用してProvider = Microsoft.ACE.OLEDB.12.0経由でcsvシートをロードしていますので、MS Accessで使用できるクエリの書式設定と機能を使用する必要があります。

0

は、このコードを使用してみてください:

var sDate = "2015-05-02 12:57:43.888"; 
DateTime date = new DateTime(); 
DateTime.TryParse(sDate, out date); 
Console.WriteLine(date.ToString("dd/MM/yyyy")); 

それともここ.NET Fiddle

+0

いいえ、このようにはいません.iは、データテーブル自体を埋める間に変換する日付が必要です。選択クエリ内にあることを意味します。 –

+0

次に、ストアドプロシージャを作成し、クエリSELECT、YourStoredProcedure(DateTimeFieldFromDatabase)AS ColumnNameYouWant、... FROM ... WHERE ... 'の中でこれを呼び出してください。 – Radinator

+0

日付がSQLの文字列型の場合、部分文字列関数を使用することができます –

関連する問題