您似乎必须根据需要将 T-SQL 中的时间列显式转换/转换为 DateTime 或 TimeSpan。
如果您的时间代表一天中的某个时间(即下午 4:15)
string sql = @"SELECT CONVERT(DATETIME, InTime) AS CheckInTime FROM TimeLog";
var checkInTimes = _conn.Query<DateTime>(sql).ToList();
如果您的时间表示一天中可以为空的时间(即下午 4:15 或为空)
要处理可为空的时间,只需将目标 .Net 类型更改为可为空(DateTime?):
// Note: the OutTime column is nullable
string sql = @"SELECT CONVERT(DATETIME, OutTime) AS CheckOutTime FROM TimeLog";
var checkOutTimes = _conn.Query<DateTime?>(sql).ToList();
请注意,生成的 DateTime 对象的日期部分将设置为 1900-01-01。
如果您的时间代表一段时间(即 2 小时 47 分钟的运行时间)
在这种情况下,最好转换为不包含无效 1900 日期的 TimeSpan,但也不允许在 .ToString() 中进行 AM/PM 格式
string sql = @"SELECT RunningTime FROM TimeLog";
var movieLength = _conn.Query<TimeSpan>(sql).ToList();
感谢 Mauro 指出这个用例。