Это немного старо, но, возможно, кто-то найдет мое решение полезным:
// Fix IE's indexOf Array
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement) {
if (this == null) throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) return -1;
var n = 0;
if (arguments.length > 0) {
n = Number(arguments[1]);
if (n != n) n = 0;
else if (n != 0 && n != Infinity && n != -Infinity) n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
if (n >= len) return -1;
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) if (k in t && t[k] === searchElement) return k;
return -1;
}
}
// add hasClass support
if (!Element.prototype.hasClass) {
Element.prototype.hasClass = function (classname) {
if (this == null) throw new TypeError();
return this.className.split(' ').indexOf(classname) === -1 ? false : true;
}
}
Если я google для «Невозможно преобразовать значение даты и времени MySQL в System.DateTime», я вижу многочисленные ссылки на проблему с доступом к MySQL из Visual Studio. Это ваш контекст?
Предлагаемое решение:
Это не ошибка, а ожидаемое поведение. Пожалуйста, проверьте руководство по параметрам подключения и установите для параметра «Разрешить нулевое время» значение true, как на прикрепленных изображениях, и ошибка исчезнет.
blockquote>
Пусть MySql преобразует вашу временную метку unix в строку. Используйте функцию mysql FROM_UNIXTIME (113283901)
Вы должны добавить Convert Zero Datetime=True
в строку соединения, например:
server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True
Вы можете сделать приложение полностью совместимым с датой и временем, которое используется 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
Я также столкнулся с той же проблемой и получил имя столбца и его типы. Затем нажмите (col_Name as Char) из имени таблицы. Таким образом, я получаю проблему как «0000-00-00 00:00:00», а затем я обновляю как действительную дату и время, когда ошибка уходит за мой случай.
Потяните значение datetime вниз как строку и сделайте DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
. Вам просто нужно будет установить формат даты для даты, которую вы возвращаете из базы данных. Скорее всего, это yyyy-MM-dd HH:mm:ss
. По крайней мере, для меня.
Проверьте здесь дополнительную информацию о DateTime.ParseExact
i добавил оба Convert Zero Datetime=True
& amp; Allow Zero Datetime=True
, и он отлично работает