You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将GetDateTime转换为仅时间格式:解决ASP.NET与数据库类型转换异常

解决方案

异常原因

SQL Server的Time(7)数据类型对应.NET中的TimeSpan类型,而非DateTime类型,直接调用GetDateTime()读取会触发类型转换异常。

修复读取逻辑

方法一:直接用GetTimeSpan()读取

修改代码中的时间读取逻辑,先获取TimeSpan值再转换为目标格式:

SqlDataReader reader = command.ExecuteReader();

if (reader.HasRows)
{
    while (reader.Read())
    {
        EventModel events = new EventModel();
        events.Id = reader.GetInt32(0);
        // 读取TimeSpan并格式化为HH:mm
        TimeSpan startTimeSpan = reader.GetTimeSpan(1);
        // 若EventModel.StartTime是字符串类型,直接赋值格式化结果
        events.StartTime = startTimeSpan.ToString(@"HH\:mm");
        // 若EventModel.StartTime是DateTime类型,需结合基准日期(比如当天)
        // events.StartTime = DateTime.Today + startTimeSpan;
        returnList.Add(events);
    }
}

方法二:通过字符串读取转换

如果遇到驱动兼容性问题,可先读取为字符串再转TimeSpan:

SqlDataReader reader = command.ExecuteReader();

if (reader.HasRows)
{
    while (reader.Read())
    {
        EventModel events = new EventModel();
        events.Id = reader.GetInt32(0);
        string timeStr = reader.GetString(1);
        TimeSpan startTimeSpan = TimeSpan.Parse(timeStr);
        events.StartTime = startTimeSpan.ToString(@"HH\:mm");
        returnList.Add(events);
    }
}

格式说明

  • 使用@"HH\:mm"输出24小时制的小时和分钟(如14:30)
  • 使用@"hh\:mm"输出12小时制的小时和分钟(如02:30)

内容的提问来源于stack exchange,提问作者NateUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:31:39