存儲`DiffTime`我需要一個DiffTime
從time
庫存儲在數據庫中(PostgreSQL的),並有三種選擇轉換爲數據庫類型:類型在數據庫
- 使用整數
fromIntegral . fromEnum
- 通過合理
toRational
- 數字實時使用
realToFrac
的整數是準確的,但相當大,因爲存儲在微微秒(10^12)。數字也是精確的,但計算Rational
可能非常昂貴,因爲它必須計算分子和分母的gcd
。真實是不準確的,但也許這並不重要。
我的時間粒度不會低於幾分鐘或比幾天大。我需要做出精確的計算。速度可能不是問題。
我應該選擇哪一個選項以及其含義?在處理用戶提交的數字時,通常應避免使用Rational,如scientific
庫中所解釋的那樣?
請注意,對於不適合「Int」的值,fromEnum將截斷爲0。如果這個範圍對於你來說足夠大,你可以使用Postgres'bigint'。要將'DiffTime'轉換爲'Integer',您應該使用['diffTimeToPicoseconds'](http://hackage.haskell.org/package/time-1.7.0.1/docs/Data-Time-Clock.html#v: diffTimeToPicoseconds)。 – sjakobi
感謝您的警告。我確實看到了這個功能,但也需要爲'NominalDiffTime'做一個轉換,它沒有這樣的功能。 – Mikkel