使用timespan查询的问题

时间:2014-03-11 19:17:53

标签: postgresql ormlite-servicestack

我正在对我的postgresql数据库(使用OrmLiteReadConnectionExtensions.SqlList<T>)进行手动查询,该数据库具有TimeSpan参数。

SericeStack.Ormlite正在按照我的预期将TimeSpan转换为::time而不是::interval

更具体地说:TimeSpan.FromDays(3)已转换为((E'00:00:00.000000')::time)(从pg日志中获取)。

有解决方法吗?

2 个答案:

答案 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小时。