CHill60
Как я уже говорил в предыдущем посте ...
Всегда старайтесь использовать "однозначные даты" при передаче информации - особенно в базы данных и из них.
Что это на самом деле означает? Это означает, что используйте формат даты, который не может быть неправильно истолкован независимо от того, в какой стране или часовом поясе вы находитесь и какой язык используется.
Пример: 01/06/2016 будет 1 июня в Великобритании, но 6 января в США.
Вы довольно близки, потому что вы использовали DD MMM yyyy в качестве формата. Что прекрасно на большинстве языков ... "27 февраля 2017" работает на английском, голландском, немецком и т. д., Но на финском языке это было бы бессмысленно (финский для февраля-helmikuu). В наши дни нет ничего необычного в том, что серверы SQL Server размещаются в разных странах по сравнению с той, где работает приложение. Нет ничего необычного и в том, что пользователи из разных стран получают доступ к одной и той же базе данных SQL.
Существует два формата дат, которые гарантированно работают для всех версий SQL Server. С пользой они работают и для большинства других баз данных.
yy-MM-ddTHH24:mi:ss
и
yyyyMMdd HH24:mi:ss
Также стоит ознакомиться со стандартом ISO для дат -
ISO 8601-Википедия[
^]
Если это не решит вашу конкретную проблему, то поставьте точку останова (F9) на линию
itmarr(1, 0) = Format(TxtDate.Text, "dd MMM yyyy")
и взгляните на содержимое TxtDate - вы, вероятно, обнаружите, что оно вообще не может быть отформатировано как дата. Вы действительно должны добавить некоторую проверку или использовать элемент управления DatePicker.
priti2010
дата, которую я захватываю, находится из csv-файла, где все данные сбрасываются во временную таблицу, а затем с проверкой даты должны быть вставлены в основную таблицу.. Таким образом формат даты не находится под контролем только я могу дать подтверждение с моей стороны
CHill60
@OriginalGriff сделал это замечание в своем комментарии к своему решению. Но будьте ясны, может показаться, что вы можете "вычислить", какой должна быть дата в его примере - если нет предшествующего 0 в Днях, то вряд ли будет предшествующий 0 в месяцах, так что "1032017" - это "явно" 10 марта. Но как насчет "3112017" - нет абсолютно никакого способа определить разницу между 3 ноября и 31 января.
Вам нужно вернуться к генерации CSV-файла и заставить их сделать это правильно