c#列数据类型日期类型(NOT DateTime)

Sha*_* Le 3 c# sql

我想知道有没有很好的方法来检测日期字段的列数据类型(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)

Aar*_*ght 7

不.没有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)