我想知道有没有很好的方法来检测日期字段的列数据类型(NOT DateTime)?
这就是我现在所做的:
switch (dt.Columns[col].DataType.FullName)
{
case "System.DateTime":
formatedVal = Formatter.GetDateTime(val);
break;
// which is NOT possible, but something equivalent am looking for
case "System.Date":
formatedVal = Formatter.GetDate(val);
break;
default:
formatedVal = val.ToString();
break;
}
Run Code Online (Sandbox Code Playgroud)
不.没有Date类型,只有DateTime.如果这是来自使用date列的SQL Server 2008表,则它将映射到DateTime.NET.
如果您需要获取此信息,那么您必须在SQL级别执行此操作; 当它加载到a时DataTable,为时已晚.
我对你的要求并不满意,但看起来你可能只需要检查午夜并使用不同的格式就可以逃脱:
DateTime dt = (DateTime)val;
return (dt == dt.Date) ? Formatter.GetDate(dt) : Formatter.GetDateTime(dt);
Run Code Online (Sandbox Code Playgroud)