Tim Docker wrote:
*Main> fmap (fromSql.head.head) $ quickQuery c "select getdate()" [] ::
IO Data.Time.Clock.UTCTime
2010-04-09 09:59:20.67 UTC
*Main> fmap (fromSql.head.head) $ quickQuery c "select getdate()" [] ::
IO Data.Time.LocalTime
2010-04-09 09:59:26.313
*Main> fmap (fromSql.head.head) $ quickQuery c "select getdate()" [] ::
IO System.Time.CalendarTime
*** Exception: Convertible: error converting source data SqlString
"2010-04-09 09:59:37.460" of type SqlValue to type

That is to be expected. You are converting data from the underlying database that does not contain timezone information. Thus it is not possible to populate ctTZ in CalendarTime.

Data.Time.LocalTime.LocalTime.ZonedTime: Cannot parse using default
format string "%Y-%m-%d %T%Q %z"
*Main> fmap (fromSql.head.head) $ quickQuery c "select getdate()" [] ::
IO System.Time.ClockTime
*** Exception: Convertible: error converting source data SqlString
"2010-04-09 09:59:49.940" of type SqlValue to type Integer: Cannot read
source value as dest type

And here you don't have something in seconds-since-epoch format. What you have is an unzoned date and time. Therefore it makes sense that you can convert it to a LocalTime. It does not have enough information to make it into a CalendarTime because it lacks a zone. It also isn't in seconds-since-epoch format, which is what a ClockTime is.

The conversions to UTCTime and LocalTime work because they do not require a timezone to be present in the input data.

-- John
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to