이 오류가 발생합니다.
MySQL 날짜 / 시간 값을 System.DateTime으로 변환 할 수 없습니다.
MySQL 데이터베이스에서 데이터를 가져 오는 동안. 나는이 날짜 내 MySQL 데이터베이스에서 데이터 유형을. 그러나 내 데이터 테이블로 검색하는 동안 위의 오류가 발생합니다.
이 문제를 어떻게 해결할 수 있습니까?
답변:
"MySQL 날짜 / 시간 값을 System.DateTime으로 변환 할 수 없음"을 Google에 검색하면 Visual Studio에서 MySQL에 액세스하는 문제에 대한 많은 참조를 볼 수 있습니다. 그것이 당신의 맥락입니까?
제안 된 한 가지 해결책은 다음과 같습니다.
이것은 버그가 아니라 예상되는 동작입니다. 연결 옵션에서 매뉴얼을 확인하고 첨부 된 사진에서와 같이 "Allow Zero Datetime"을 true로 설정하면 오류가 사라집니다.
Convert Zero Datetime=True
연결 문자열에 추가해야합니다 . 예를 들면 다음과 같습니다.
server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True
datetime 값을 문자열로 끌어 내고 다음을 수행 DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
합니다. 데이터베이스에서 반환하는 날짜에 대해 날짜 형식을 설정하기 만하면됩니다. 대부분 yyyy-MM-dd HH:mm:ss
. 적어도 나를위한 것입니다.
여기에서 자세한 정보를 확인하십시오. DateTime.ParseExact
MySql이 유닉스 타임 스탬프를 문자열로 변환하도록합니다. mysql 함수 FROM_UNIXTIME (113283901) 사용
나는 또한 같은 문제에 직면했고 열 이름과 유형을 얻었습니다. 그런 다음 테이블 이름에서 캐스트 (col_Name as Char). 이런 식으로 문제가 '0000-00-00 00:00:00'으로 표시되면 유효한 날짜와 시간으로 업데이트하여 내 경우에 오류가 사라집니다.
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
연결 문자열을 변경하는 대신 개체 의 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;
}
}
Stimulsoft 보고서에서이 매개 변수를 연결 문자열에 추가합니다 (데이터 소스-> 편집을 마우스 오른쪽 버튼으로 클릭).
Convert Zero Datetime=True;