3

在 Yesod 中使用UTCTime我的模型中的字段时,我收到以下错误:

PersistMarshalError "field timestamp: Expected UTCTime, received PersistText \"09:18:07\""

我正在使用 SQLite 来存储我的数据库。我的模型如下所示:

Myobject
    timestamp UTCTime default=CURRENT_TIME
    otherfield Text

请注意,无论有无默认值,都会发生此错误。

我正在选择Myobject-entities 列表,如下所示:

myobjects <- selectList [] [Desc MyobjectTimestamp]

使用MyobjectOtherfield而不是MyobjectTimestamp也无济于事,这是有道理的,因为所有数据都被提取并因此被封送。

在这里提出了类似的问题,但答案对我没有帮助。

使用 SQLite 时如何UTCTime在 Yesod 中使用?

编辑:PersistText \"09:18:07\"错误中提到的是字段默认的值。

4

1 回答 1

5

您存储了一个 Text 值"09:18:07",而它需要一个 UTCTime 值。您是否手动插入值?

getCurrentTimefromData.Time返回一个 type 的值IO UTCTime,所以你可以putStr getCurrentTime在 GHCI 中使用来获得有效的表示,或者now <- liftIO getCurrentTime在你的函数中使用。

编辑:因为getCurrentTime返回一个时间戳,如:2013-10-25 10:16:32.1627238 UTC,在您的数据库中插入一个类似的值应该可以解决错误。

于 2013-10-25T10:07:53.270 回答