Не удалось преобразовать строку в smalldatetime, но только на 1 из 4 учетных записей - PullRequest
0 голосов
/ 21 октября 2019

Небольшое приложение для управления нашим складом, в котором есть возможность редактировать, сколько было вывезено и в какой отдел. Чтобы получить правильное значение, используется SELECT, содержащий дату, когда он был извлечен:

CAST(date AS smalldatetime) = '" + Convert.ToDateTime(date_value).ToString("dd-MMM-yy HH:mm:ss") + "'

Приложение запущено на 4 компьютерах с разными пользователями. 3 из них работают отлично, а 4-й выдает ошибку ниже. Что может быть причиной такой ошибки, поскольку она влияет только на 25% пользователей.

(все были протестированы с одинаковыми записями)

The Error

1 Ответ

1 голос
/ 21 октября 2019

Часть MMM в формате dd-MMM-yy зависит от языка. Вы можете найти JAN на английском или ENE на испанском (Enero), и это настроено на уровне операционной системы. Кроме того, формат некоторых регионов чередует день с месяцем, поэтому вы не можете без сомнения знать, является ли 01-03-1900 первым марта или третьего января.

Вы не должны работать со строкамиесли вам нужно обрабатывать даты, вы должны использовать правильный формат даты в качестве параметра, как предложил Дэмиен. Поэтому удалите метод ToString() и используйте класс DateTime напрямую.

Если вам как-то нужно проанализировать строку, являющуюся датой, попробуйте сгенерировать ее в формате даты ISO 8601 . , yyyy-mm-dd для даты или yyyy-MM-ddTHH:mm:ssZ для даты и времени (обратите внимание на Z для UTC).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...