我正在尝试将时间戳加载到mysql中。我的所有时间都是UTCTime对象。HDBC mysql实现似乎不喜欢UTCTime对象,尽管内部文档说它将所有时间视为UTC时间处理。我认为我需要将UTCTime转换为EpochTime,因为看起来HDBC mysql实现支持绑定SqlEpochTime。我一直没有弄清楚如何从我的UTCTime获取一个EpochTime。
现在有一个解决方法:
import Data.Time.Clock (UTCTime)
import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
import Database.HDBC (SqlValue (SqlEpochTime))
-- until HDBC-mysql fixes it. use instead of SqlUTCTime (data constructor)
sqlUTCTime :: UTCTime -> SqlValue
sqlUTCTime = SqlEpochTime . floor . utcTimeToPOSIXSeconds
我在3周前向Chris Waterson(HDBC-mysql的主要维护者)发送了一份修复方案,他说会在下一个版本中加入。