Unable to convert MySQL date/time value to System.DateTime
表中 DATETIME/TIMESTAMP 列存在 零日期 0000-00-00 00:00:00。.NET DateTime 最小值為 0001-01-01,無法映射,驅動程序拋出轉換異常。
Allow Zero Datetime=True:允許讀取零日期Convert Zero Datetime=True:將零日期自動轉為 DateTime.MinValue (0001-01-01)UPDATE tbl SET dt_col = '1970-01-01 00:00:00' WHERE dt_col = '0000-00-00 00:00:00';
-- 或設置列默認值
ALTER TABLE tbl MODIFY dt_col DATETIME DEFAULT '1970-01-01 00:00:00';
業務語義上「未知時間」建議用 NULL(需列允許 NULL)而非零日期。
public DateTime? CreatedAt { get; set; } // 可接收 NULL,避免轉換異常
配合驅動程序 Allow Zero Datetime=False,零日期將映射為 null。
NULL,禁止零日期NULL 或業務約定基準日(如 1970-01-01)Allow Zero Datetime=True 作為兼容兜底,但代碼層強制用 DateTime?零日期是 MySQL 早期為兼容無效日期設計的「特產」,現代應用應徹底清除,避免跨語言、跨驅動程序的無限踩坑。