diff --git a/hasql.cabal b/hasql.cabal
--- a/hasql.cabal
+++ b/hasql.cabal
@@ -1,7 +1,7 @@
 name:
   hasql
 version:
-  0.19.3
+  0.19.3.1
 category:
   Hasql, Database, PostgreSQL
 synopsis:
diff --git a/library/Hasql/Encoders.hs b/library/Hasql/Encoders.hs
--- a/library/Hasql/Encoders.hs
+++ b/library/Hasql/Encoders.hs
@@ -261,35 +261,35 @@
 {-# INLINABLE timestamp #-}
 timestamp :: Value LocalTime
 timestamp =
-  Value (Value.unsafePTI PTI.timestamp (Prelude.bool Encoder.timestamp_int Encoder.timestamp_float))
+  Value (Value.unsafePTI PTI.timestamp (Prelude.bool Encoder.timestamp_float Encoder.timestamp_int))
 
 -- |
 -- Encoder of @TIMESTAMPTZ@ values.
 {-# INLINABLE timestamptz #-}
 timestamptz :: Value UTCTime
 timestamptz =
-  Value (Value.unsafePTI PTI.timestamptz (Prelude.bool Encoder.timestamptz_int Encoder.timestamptz_float))
+  Value (Value.unsafePTI PTI.timestamptz (Prelude.bool Encoder.timestamptz_float Encoder.timestamptz_int))
 
 -- |
 -- Encoder of @TIME@ values.
 {-# INLINABLE time #-}
 time :: Value TimeOfDay
 time =
-  Value (Value.unsafePTI PTI.time (Prelude.bool Encoder.time_int Encoder.time_float))
+  Value (Value.unsafePTI PTI.time (Prelude.bool Encoder.time_float Encoder.time_int))
 
 -- |
 -- Encoder of @TIMETZ@ values.
 {-# INLINABLE timetz #-}
 timetz :: Value (TimeOfDay, TimeZone)
 timetz =
-  Value (Value.unsafePTI PTI.timetz (Prelude.bool Encoder.timetz_int Encoder.timetz_float))
+  Value (Value.unsafePTI PTI.timetz (Prelude.bool Encoder.timetz_float Encoder.timetz_int))
 
 -- |
 -- Encoder of @INTERVAL@ values.
 {-# INLINABLE interval #-}
 interval :: Value DiffTime
 interval =
-  Value (Value.unsafePTI PTI.interval (Prelude.bool Encoder.interval_int Encoder.interval_float))
+  Value (Value.unsafePTI PTI.interval (Prelude.bool Encoder.interval_float Encoder.interval_int))
 
 -- |
 -- Encoder of @UUID@ values.
diff --git a/tasty/Main.hs b/tasty/Main.hs
--- a/tasty/Main.hs
+++ b/tasty/Main.hs
@@ -23,6 +23,57 @@
     testCase "Executing the same query twice" $
     pure ()
     ,
+    testCase "Interval Encoding" $
+    let
+      actualIO =
+        DSL.session $ do
+          let
+            query =
+              Query.statement sql encoder decoder True
+              where
+                sql =
+                  "select $1 = interval '10 seconds'"
+                decoder =
+                  (Decoders.singleRow (Decoders.value (Decoders.bool)))
+                encoder =
+                  Encoders.value (Encoders.interval)
+            in DSL.query (10 :: DiffTime) query
+      in actualIO >>= \x -> assertEqual (show x) (Right True) x
+    ,
+    testCase "Interval Decoding" $
+    let
+      actualIO =
+        DSL.session $ do
+          let
+            query =
+              Query.statement sql encoder decoder True
+              where
+                sql =
+                  "select interval '10 seconds'"
+                decoder =
+                  (Decoders.singleRow (Decoders.value (Decoders.interval)))
+                encoder =
+                  Encoders.unit
+            in DSL.query () query
+      in actualIO >>= \x -> assertEqual (show x) (Right (10 :: DiffTime)) x
+    ,
+    testCase "Interval Encoding/Decoding" $
+    let
+      actualIO =
+        DSL.session $ do
+          let
+            query =
+              Query.statement sql encoder decoder True
+              where
+                sql =
+                  "select $1"
+                decoder =
+                  (Decoders.singleRow (Decoders.value (Decoders.interval)))
+                encoder =
+                  Encoders.value (Encoders.interval)
+            in DSL.query (10 :: DiffTime) query
+      in actualIO >>= \x -> assertEqual (show x) (Right (10 :: DiffTime)) x
+    ,
     testCase "Enum" $
     let
       actualIO =
