Для корректной выборки из 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();