用于在数据库中存储`DiffTime`的类型

时间:2017-01-24 07:11:05

标签: database postgresql haskell numbers

我需要将DiffTime库中的time存储在数据库(PostgreSQL)中,并且有三个选项可以转换为数据库类型:

  1. 使用fromIntegral . fromEnum
  2. 整数
  3. Numeric via Rational toRational
  4. 真实使用realToFrac
  5. 整数是精确的,但相当大,因为存储在皮秒(10 ^ 12)。数字也是精确的,但计算Rational可能非常昂贵,因为它必须为分子和分母计算gcd。真实是不准确的,但也许这无关紧要。

    我的时间粒度绝不会低于几分钟或大于几天。我需要做出精确的计算。速度可能不是问题。

    我应该选择哪个选项以及含义是什么?在处理用户提交的数字时,一般应该避免Rational,如scientific库中所解释的那样吗?

1 个答案:

答案 0 :(得分:5)

我想你可能在寻找interval。 hasql库有一个DiffTime的编码器和解码器,名称为interval