C# 值为0000-00-00:00:00时如何处理mysql datetime列
我有一个数据库列“date_announced”,其值为C# 值为0000-00-00:00:00时如何处理mysql datetime列,c#,mysql,datetime,C#,Mysql,Datetime,我有一个数据库列“date_announced”,其值为0000-00-00 00:00:00,当我尝试将此值插入类字段时,我遇到了错误 无法将MySQL日期/时间值转换为System.DateTime“,如何优雅地处理代码而不引发异常 date_announced = 0000-00-00 00:00:00 var BuildDetails = new BuildAnnounceDetails(); while (rdr.Read()) { BuildDetails.SP = rd
0000-00-00 00:00:00
,当我尝试将此值插入类字段时,我遇到了错误
无法将MySQL日期/时间值转换为System.DateTime“
,如何优雅地处理代码而不引发异常
date_announced = 0000-00-00 00:00:00
var BuildDetails = new BuildAnnounceDetails();
while (rdr.Read())
{
BuildDetails.SP = rdr.GetString(0);
//BuildDetails.BuildID = rdr.GetString(1);
BuildDetails.CreatedDate = rdr.GetString(1);
BuildDetails.AnnouncedDate = rdr.GetString(2); **//throws an exception at this line**
BuildDetails.AnnouncedBy = rdr.GetString(3);
if (BuildDetails != null)
{
BuildAnnounceDetailsInfo.Add(BuildDetails);
}
}
错误:
无法将MySQL日期/时间值转换为System.DateTime
您应该使用具有IsValidDateTime
属性的方法。因此,在您的情况下:
BuildDetails.AnnouncedDate = rdr.GetMySqlDateTime(2).IsValidDateTime?rdr.GetString(2):string.Empty;
您应该使用具有IsValidDateTime
属性的方法。因此,在您的情况下:
BuildDetails.AnnouncedDate = rdr.GetMySqlDateTime(2).IsValidDateTime?rdr.GetString(2):string.Empty;
0000-00-00…日期的目的是什么?你想显示它还是什么?当值为
0000-00-00
时,我只想显示一个空字符串。也许使用null而不是0。@STLDeveloper-空值不是一个糟糕的设计吗?而是有一个默认值?@dotnet-一点也不。空值在未知值时非常有用。我想做什么0000-00-00…日期的目的是什么?你想显示它还是什么?当值为0000-00-00
时,我只想显示一个空字符串。也许可以使用null而不是0。@STLDeveloper-null值不是一个糟糕的设计吗?而是有一个默认值?@dotnet-一点也不。值未知时,null非常有用。