我们看看mysql的源码里面默认是如何处理这个值的:
0000-00-00/0000-00-00 00:00:00
下面的核心代码字体已经加粗标注好了哦!
源码文件:MySql.Data\Source\MySqlConnectionStringBuilder.cs
代码片段:
#if !CF && !MONO
[Category("Advanced")]
[DisplayName("Convert Zero Datetime")]
[Description("Should illegal datetime values be converted to DateTime.MinValue")]
[DefaultValue(false)]
[RefreshProperties(RefreshProperties.All)]
#endif
public bool ConvertZeroDateTime
{
get { return convertZeroDatetime; }
set
{
SetValue("Convert Zero Datetime", value);
convertZeroDatetime = value;
}
}
源码文件:MySql.Data\Source\datareader.cs
代码片段:
public override DateTime GetDateTime(int i)
{
IMySqlValue val = GetFieldValue(i, true);
MySqlDateTime dt;
if (val is MySqlDateTime)
dt = (MySqlDateTime)val;
else
{
// we need to do this because functions like date_add return string
string s = GetString(i);
dt = MySqlDateTime.Parse(s, this.connection.driver.Version);
}
if (connection.Settings.ConvertZeroDateTime&& !dt.IsValidDateTime)
return DateTime.MinValue;
else
return dt.GetDateTime();
}