无法将postgresql区间转换为C# TimeSpan。

问题描述 投票:2回答:1

我不能把postgresql interval投成 TimeSpan:

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

正在抛出:

"指定的投掷无效"

不过 dr["Hours"] 返回值 "06:00:00" :

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

dr["小时"]是NpgsqlTypes.NpgsqlInterval。

EDIT:

我唯一能让它工作的方法是使用。

new TimeSpan(((NpgsqlTypes.NpgsqlInterval)dr["Hours"]).TotalTicks)
c# postgresql npgsql timespan
1个回答
3
投票

至少你不能直接把字符串投到TimeSpan里。这样就可以了。

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

npgsql APi docs。

为了避免将不必要的提供者特定的关注强加给不需要关注它们的用户,对包含NpgsqlInterval值的字段的GetValue的调用将返回一个TimeSpan而不是NpgsqlInterval。

© www.soinside.com 2019 - 2024. All rights reserved.