2

我无法将 postgresql 间隔转换为TimeSpan

item.TSHours = dr["Hours"] == DBNull.Value ? TimeSpan.Zero : (TimeSpan)dr["Hours"];

正在投掷:

“指定的演员表无效”

dr["Hours"]返回值"06:00:00":/

我究竟做错了什么?我尝试了几个版本的 npgsql,但没有任何改变。

dr["Hours"] 是 NpgsqlTypes.NpgsqlInterval

编辑:

我可以使它工作的唯一方法是使用:

new TimeSpan(((NpgsqlTypes.NpgsqlInterval)dr["Hours"]).TotalTicks)
4

1 回答 1

3

至少您不能将字符串直接转换为 TimeSpan 。这将起作用:

item.TSHours = dr["Hours"] == DBNull.Value ? TimeSpan.Zero : TimeSpan.Parse(dr["Hours"].ToString());

来自npgsql APi文档:

为避免将不必要的特定于提供程序的问题强加给不需要关心他们的用户,在包含 NpgsqlInterval 值的字段上调用 ​​GetValue 将返回 TimeSpan 而不是 NpgsqlInterval。

于 2012-03-01T07:07:26.833 回答