Для корректной выборки из C# SQL запросом по датам необходимо следующее:
1. Преобразовать дату:
datStart = DateTime.ParseExact(date1.Value.ToString(), "dd.MM.yyyy H:mm:ss", new CultureInfo("en-US")).ToString("MM/dd/yyyy");
datEnd = DateTime.ParseExact(date2.Value.ToString(), "dd.MM.yyyy H:mm:ss", new CultureInfo("en-US")).ToString("MM/dd/yyyy"); 2. Использовать CTOD в запросе:
BETWEEN(card.dat2d, CTOD('" + datStart + "'), CTOD('" + datEnd + "'))
Для смены формата даты в выборках с фокспрошных таблиц, используя vfpoledb.1 необходимо выполнить команду SET DATE dmy или, что больше подходит для России SET DATE GERMAN, но фишка в том что oledb не позволяет просто выполнить эту команду. Можно выйти из ситуации следующим образом:
string script = @"SET DATE GERMAN";
OleDbCommand comm = new OleDbCommand("", conn);
conn.Open();
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "ExecScript";
comm.Parameters.Add("myScript", OleDbType.Char).Value = script;
comm.ExecuteNonQuery();