Невозможно преобразовать значение даты и времени MySQL в System.DateTime
Я получаю эту ошибку:
Невозможно преобразовать значение даты и времени MySQL в System.DateTime
пока я пытаюсь извлечь данные из базы данных MySQL.
У меня есть тип данных даты в моей базе данных MySQL. Но, возвращая его в мой datatable, он получает ошибку выше.
Как я могу это исправить?
Ответы
Ответ 1
Если я google для "Невозможно преобразовать значение даты/времени MySQL в System.DateTime", я вижу многочисленные ссылки на проблему с доступом к MySQL из Visual Studio. Это ваш контекст?
Предлагаемое решение:
Это не ошибка, а ожидаемая поведение. Пожалуйста, ознакомьтесь с подключить опции и установить "Разрешить ноль" Datetime "до true, как при прикрепленном изображения, и ошибка исчезнет.
Ссылка: http://bugs.mysql.com/bug.php?id=26054
Ответ 2
Вы должны добавить Convert Zero Datetime=True
в строку подключения, например:
server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True
Ответ 3
i добавил как Convert Zero Datetime=True
, так и Allow Zero Datetime=True
, и он отлично работает
Ответ 4
Потяните значение datetime вниз как строку и выполните DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
Вам просто нужно установить формат даты для даты, которую вы возвращаете из базы данных. Скорее всего, это yyyy-MM-dd HH:mm:ss
. По крайней мере, для меня.
Подробнее здесь о DateTime.ParseExact
Ответ 5
Пусть MySql преобразует вашу временную метку unix в строку. Используйте функцию mysql FROM_UNIXTIME (113283901)
Ответ 6
Я также столкнулся с той же проблемой и получил имя столбца и его типы. Затем введите (col_Name как Char) из имени таблицы. Таким образом, я получаю проблему как "0000-00-00 00:00:00", а затем я обновляю как допустимую дату и время, когда ошибка уходит за мой случай.
Ответ 7
Вы можете сделать приложение полностью совместимым с датой и временем, которое используется MySql. Когда приложение запускается во время выполнения, укажите этот код.
Сначала перейдите в Службу приложений.
В списке инструментов
- Перейти к проекту
- Свойства проекта
- Выберите вкладку "Приложение"
- Просмотр событий приложения
Это откроет новый файл. Этот файл содержит код, используемый в начале приложения.
Введите этот код в новый файл:
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
My.Application.ChangeCulture("en")
My.Application.ChangeUICulture("en")
My.Application.Culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
My.Application.Culture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd"
My.Application.Culture.DateTimeFormat.LongTimePattern = "HH:mm:ss"
My.Application.Culture.DateTimeFormat.ShortTimePattern = "HH:mm:ss"
End Sub
End Class
Ответ 8
Вместо того, чтобы изменить строку подключения, вы можете использовать IsValidDateTime
свойство MySqlDateTime
объекта, чтобы помочь вам определить, если вы можете преобразовать объект как DateTime
.
У меня был сценарий, в котором я пытался загрузить данные из столбца "UpdateTime", который был явно установлен только при обновлении строки (в отличие от InsertedTime, который всегда был установлен). Для этого случая я использовал метод MySqlDataReader.GetMySqlDateTime
следующим образом:
using (MySqlDataReader reader = await MySqlHelper.ExecuteReaderAsync(...))
{
if (await reader.ReadAsync())
{
DateTime? updateTime = reader.GetMySqlDateTime("UpdateTime").IsValidDateTime ? (DateTime?)reader["UpdateTime"] : null;
}
}
Ответ 9
если "allow zero datetime = true" не работает, используйте следующие решения: -
Добавьте это к вашей строке подключения: "allow zero datetime = no" - это сделало приведение типа отлично.
Ответ 10
В отчете Stimulsoft добавьте этот параметр в строку подключения (щелкните правой кнопкой мыши datasource-> изменить).
Convert Zero Datetime=True;