我正在对我的postgresql数据库(使用OrmLiteReadConnectionExtensions.SqlList<T>
)进行手动查询,该数据库具有TimeSpan
参数。
SericeStack.Ormlite正在按照我的预期将TimeSpan
转换为::time
而不是::interval
。
更具体地说:TimeSpan.FromDays(3)
已转换为((E'00:00:00.000000')::time)
(从pg日志中获取)。
有解决方法吗?
答案 0 :(得分:0)
我目前的解决方法是使用C#string.Format
来代替这个有问题的参数,而不是@paramname
支持的安全和推荐的SqlList<T>
。
这可能被认为是危险的,但由于参数是双倍的,我可能还可以。
字符串的相关部分是:
string.Format(CultureInfo.InvariantCulture, "RESTOFTHEQUERY ('{0:0.####} seconds'::interval) RESTOFTHEQUERY", timespan.TotalSeconds);
不要忘记使用CultureInfo.InvariantCulture
。
答案 1 :(得分:0)
对于它的价值,您只需将time
值转换为interval
即可。演示
SELECT now()::time::interval
因此,在您的手动查询中添加::interval
,您应该没问题 - 除了间隔&gt;当然是24小时。