Возможно, ваша проблема вызвана автоматическим преобразованием c из значений даты и времени (Today и Today.AddDays (1)) в строку при объединении этих значений.
Когда вы запрашиваете MS Access для полей даты со строковыми константами, он хочет, чтобы строки были отформатированы способом «MM / dd / yyyy», и поэтому вы должны возвращать строку, отформатированную в этом режиме, когда вы используете ее для представлять ваши значения даты. Вот так:
... Where [Datum] BETWEEN #" + DateTime.Today.ToString("MM/dd/yyyy") ...
(обратите внимание, что я удалил Today.AddDays (0), потому что это не имеет смысла)
, но есть другой способ намного более безопасный, потому что он избегает любых возможных Sql Атака с использованием инъекций и более гибкая, поскольку она не заставляет вас объединять строки и использовать параметры форматирования. Этот метод называется «Параметризованный запрос»
Вот как переписать ваш код для использования параметров.
using(OleDbConnection con = new OleDbConnection(.....))
{
OleDbCommand cmd = con.CreateCommand();
con.Open();
Console.WriteLine("Connected...");
cmd.CommandText = @"Insert into New1 ([B ID], [Dat], [Sum])
SELECT BID, Dat, Summe
FROM Bestellung
Where [Datum] BETWEEN @d1 AND @d2";
Console.WriteLine(DateTime.Today.AddDays(0));
Console.WriteLine(DateTime.Today.AddDays(1));
cmd.Parameters.Add("@d1", OleDbType.Date).Value = DateTime.Today;
cmd.Parameters.Add("@d2", OleDbType.Date).Value = DateTime.Today.AddDays(1);
cmd.ExecuteNonQuery();
Console.WriteLine("Record Submitted");
}