处理Data.Time和PostgreSQL之间的时间精度差异

q8l4jmvw  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(181)

我有一些数据库功能,我正在测试(以确保我的查询等)。work)--在它们中,我正在对记录进行反序列化(通过Database.Esqueleto.Experimental),这些记录包含UTCTime(和Maybe UTCTime等)类型的值。
问题是我在测试中遇到了以下几种错误:

1) Vulture.Database.EventRepository.addEvents correctly sets the event properties
       expected: 2023-05-06 21:52:13.441270819 UTC
        but got: 2023-05-06 21:52:13.441271 UTC

这有点烦人,但我不知道如何操作UTCTime值来改变精度,或者改变等式的工作方式。

3yhwsihp

3yhwsihp1#

正如你所注意到的,UTCTime本身有一个相当稀疏的API。几乎所有有趣的事情都涉及到NominalDiffTime。对于这种情况,我认为你最好得到两个时间之间的差,然后确保它低于某个ε。为此,相关的时间函数是diffUTCTime,其余部分利用了NominalDiffTime可用的大量示例。感谢Num示例,我们有了可用的abs。感谢NumFractional示例,我们可以使用文字来创建NominalDiffTime值。当然,还有Ord用于比较……

let eps = 1e-5 in abs (diffUTCTime t1 t2) < eps

根据需要随意调整eps。当然,您可能需要调整整个结构,以便从测试框架中获得良好的诊断。
记住这是使用UTCTime的基本框架-这些值只是时间点。真正有趣的是使用NominalDiffTime值,这些值表示UTCTime值之间的间隔。这些区间比点有更丰富的API来操作它们。

相关问题