Работа с датой в vfpoledb в C#

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *