diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.3
+
+* Use Data.Time.Format to parse TimeOfDay results properly (missing in https://github.com/paul-rouse/mysql-simple/pull/37).
+
 ## 0.4.2.0
 
 * Handle fractional seconds in parameter substitution (without affecting cases where only whole seconds are used).  https://github.com/paul-rouse/mysql-simple/pull/40
diff --git a/Database/MySQL/Simple/Result.hs b/Database/MySQL/Simple/Result.hs
--- a/Database/MySQL/Simple/Result.hs
+++ b/Database/MySQL/Simple/Result.hs
@@ -181,12 +181,9 @@
                                    <*> decimal
 
 instance Result TimeOfDay where
-    convert f = flip (atto ok) f $ do
-                hours <- decimal <* char ':'
-                mins <- decimal <* char ':'
-                secs <- decimal :: Parser Int
-                case makeTimeOfDayValid hours mins (fromIntegral secs) of
-                  Just t -> return t
+    convert f = doConvert f ok $ \bs ->
+                case parseTime defaultTimeLocale "%T%Q" (B8.unpack bs) of
+                  Just t -> t
                   _      -> conversionFailed f "TimeOfDay" "could not parse"
         where ok = mkCompats [Time]
 
diff --git a/mysql-simple.cabal b/mysql-simple.cabal
--- a/mysql-simple.cabal
+++ b/mysql-simple.cabal
@@ -1,5 +1,5 @@
 name:           mysql-simple
-version:        0.4.2.0
+version:        0.4.3
 homepage:       https://github.com/paul-rouse/mysql-simple
 bug-reports:    https://github.com/paul-rouse/mysql-simple/issues
 synopsis:       A mid-level MySQL client library.
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -11,7 +11,8 @@
 testConn = defaultConnectInfo {
                connectHost     = "127.0.0.1",
                connectUser     = "test",
-               connectDatabase = "test"
+               connectDatabase = "test",
+               connectPassword = "test"
            }
 
 -- Only the most cursory test is done at the moment, simply showing that
