Даты сохраняются в формате дд/мм/гггг
Я подозреваю, что это не так. Я подозреваю, что они хранятся в некотором родном формате даты/времени, который, несомненно, намного эффективнее, чем 10-символьная строка. (Я предполагаю, что вы используете, например, подходящий тип поля, а не varchar.) Важно различать неотъемлемый характер данных и «как он отображается при преобразовании в текст».
Но удивительная вещь
Я не вижу это как удивительно. Я рассматриваю это как совершенно естественный результат использования преобразования строк без необходимости. Они почти всегда укусят вас в конце. Вы не пытаетесь представить строку - вы пытаетесь представить дату. Поэтому используйте этот тип, насколько возможно.
Вы должны:
- Использование параметризованных SQL для запросов по многим причинам, - самое главное, чтобы избежать атак с внедрением SQL, но также избежать ненужным преобразования строк такого рода
- Укажите значение параметра, как
DateTime
, что позволяет избежать преобразования строки
вы не указали, какой тип поставщика вы используете - моя догадка OleDbConnection
и т. д. Обычно, если вы посмотрите на документацию для свойства Parameters
соответствующего класса команд, вы найдете соответствующий пример. Например, OleDbCommand.Parameters
показывает параметризованный запрос на OleDbConnection
. Одна вещь, которую стоит отметить, из документации:
Поставщик OLE DB .NET провайдер не поддерживает именованные параметры для передачи параметров в операторе SQL или хранимой процедуры, называемой помощью OleDbCommand
когда CommandType
установлен в Text
. В этом случае необходимо использовать знак вопроса (?
). [...] Следовательно, порядок, в котором OleDbParameter
объектов добавляется к OleDbParameterCollection
, должен непосредственно соответствовать позиции заполнителя вопросительного знака для параметра в тексте команды.
Без сомнения, лучший ответ, который я получил .... – greatmajestics