无法将postgresql间隔转换为C#TimeSpan

时间:2012-03-01 06:26:39

标签: c# postgresql npgsql

我无法将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)

1 个答案:

答案 0 :(得分:2)

至少你不能直接将字符串转换为TimeSpan。 这将有效:

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

来自npgsql APi docs:

  

为了避免对不需要关注它们的用户强制不必要的特定于提供者的问题,在包含NpgsqlInterval值的字段上调用GetValue将返回TimeSpan而不是NpgsqlInterval。