この問題はpast beforeで発生し、解決済みとマークされています。Postgresql-simpleでタイムゾーン付きタイムスタンプを取得する
Data.Time
と一緒にpostgresql-simple
パッケージを使用しています。 timestamptz
という1つの列を取得するためのクエリを実行すると、パターンマッチエラーが発生します。下記の擬似コード:
import Data.Text as T
import Data.Time (UTCTime,LocalTime,ZonedTime)
import Database.PostgreSQL.Simple as Pg
import Database.PostgreSQL.Simple.FromRow
import Database.PostgreSQL.Simple.ToRow
import Database.PostgreSQL.Simple.ToField
import Database.PostgreSQL.Simple.Time
import qualified Data.Vector as V
...
--- in main this is the code
[Pg.Only (i::UTCTime)] <- Pg.query conn "select lastupdated from constraints where name=?" (Only ("carrier"::T.Text))
...
クエリを実行するとき、私は(上記に注意してください、実行時にこのエラーが出る:
*** Exception: user error (Pattern match failure in do expression at ...)
を、私は以下のような無効な型に上記変更した場合:
012:期待されるタイプは確かにtimestamptz
であることを示している
[Pg.Only (i::T.Text)] <- Pg.query conn "select lastupdated from constraints where name=?" (Only ("carrier"::T.Text))
私はタイプについての例外を取得
また、これは、上記のクエリの結果はpsql
コンソールでどのように見えるかです:
lastupdated
-------------------------------
2016-04-13 00:08:33.789761+00
2016-04-13 14:33:38.27739+00
(2 rows)
私の理解では、Data.Time.UTCTime
またはDatabase.PostgreSQL.Simple.Time.UTCTimestamp
がPostgreSQL
のtimestamptz
型にマップする必要があることです。明らかに、私が上記のエラーを受けている場合、その理解は間違っています。これで助けに感謝します。
ありがとう! – Sal