Otrzymuję ten błąd:
Nie można przekonwertować wartości daty / godziny MySQL na System.DateTime
podczas gdy próbuję pobrać dane z bazy danych MySQL. Mam typ danych daty w mojej bazie danych MySQL. Ale podczas pobierania go do mojego datatable, pojawia się powyższy błąd.
Jak mogę to naprawić?
.net
asp.net
mysql
asp.net-3.5
Ankit Chauhan
źródło
źródło
Odpowiedzi:
Jeśli wyszukuję w wyszukiwarce hasło „Nie można przekonwertować wartości daty / godziny MySQL na System.DateTime”, widzę liczne odniesienia do problemu z dostępem do MySQL z programu Visual Studio. Czy to twój kontekst?
Jedno sugerowane rozwiązanie to:
Źródła: http://bugs.mysql.com/bug.php?id=26054
źródło
Musisz dodać
Convert Zero Datetime=True
do parametrów połączenia, na przykład:źródło
I dodaje zarówno
Convert Zero Datetime=True
&Allow Zero Datetime=True
i działa dobrzeźródło
Przeciągnij wartość
DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
data- godzina w dół jako ciąg i wykonaj. Wystarczy ustawić format daty dla daty zwracanej z bazy danych. Najprawdopodobniej takyyyy-MM-dd HH:mm:ss
. Przynajmniej jest dla mnie.Sprawdź tutaj więcej informacji na temat
DateTime.ParseExact
źródło
Pozwól MySql przekonwertować twój znacznik czasu unixa na łańcuch. Użyj funkcji mysql FROM_UNIXTIME (113283901)
źródło
Zmierzyłem się też z tym samym problemem i otrzymałem nazwę kolumny i jej typy. Następnie rzutowanie (nazwa_kolumny jako Char) z nazwy tabeli. W ten sposób otrzymuję problem jako „0000-00-00 00:00:00”, a następnie aktualizuję jako prawidłową datę i godzinę, w której błąd zniknął w mojej sprawie.
źródło
Możesz sprawić, by aplikacja była w pełni zgodna z datą i godziną używaną przez MySql. Gdy aplikacja działa w czasie wykonywania, podaj ten kod. Najpierw przejdź do zdarzeń aplikacji. Na liście narzędzi
Otworzy się nowy plik. Ten plik zawiera kod używany na początku aplikacji.
Napisz ten kod w tym nowym pliku:
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
źródło
Zamiast zmieniać parametry połączenia, możesz użyć
IsValidDateTime
właściwościMySqlDateTime
obiektu, aby pomóc Ci określić, czy możesz rzutować obiekt jako plikDateTime
.Miałem scenariusz, w którym próbowałem załadować dane z kolumny „UpdateTime”, która została jawnie ustawiona tylko wtedy, gdy nastąpiła aktualizacja wiersza (w przeciwieństwie do InsertedTime, który był zawsze ustawiony). W tym przypadku użyłem takiej
MySqlDataReader.GetMySqlDateTime
metody:źródło
jeśli „zezwalaj na zero datetime = true” nie działa, użyj następujących rozwiązań: -
Dodaj to do parametrów połączenia: "allow zero datetime = no" - to sprawiło, że rzutowanie typu działało idealnie.
źródło
W raporcie Stimulsoft dodaj ten parametr do parametrów połączenia (kliknij prawym przyciskiem myszy źródło danych-> edytuj)
źródło