diff --git a/esqueleto.cabal b/esqueleto.cabal
--- a/esqueleto.cabal
+++ b/esqueleto.cabal
@@ -1,5 +1,5 @@
 name:                esqueleto
-version:             1.3.5
+version:             1.3.6
 synopsis:            Bare bones, type-safe EDSL for SQL queries on persistent backends.
 homepage:            https://github.com/meteficha/esqueleto
 license:             BSD3
diff --git a/src/Database/Esqueleto.hs b/src/Database/Esqueleto.hs
--- a/src/Database/Esqueleto.hs
+++ b/src/Database/Esqueleto.hs
@@ -237,7 +237,7 @@
 --
 -- Since @age@ is an optional @Person@ field, we use 'just' lift
 -- @val 18 :: SqlExpr (Value Int)@ into @just (val 18) ::
--- SqlExpr (Value (Just Int))@.
+-- SqlExpr (Value (Maybe Int))@.
 --
 -- Implicit joins are represented by tuples.  For example, to get
 -- the list of all blog posts and their authors, we could write:
diff --git a/src/Database/Esqueleto/Internal/Sql.hs b/src/Database/Esqueleto/Internal/Sql.hs
--- a/src/Database/Esqueleto/Internal/Sql.hs
+++ b/src/Database/Esqueleto/Internal/Sql.hs
@@ -30,6 +30,7 @@
   , unsafeSqlBinOp
   , unsafeSqlValue
   , unsafeSqlFunction
+  , unsafeSqlExtractSubField
   , UnsafeSqlFunctionArgument
   , rawSelectSource
   , runSource
@@ -479,6 +480,19 @@
           uncommas' $ map (\(ERaw _ f) -> f info) $ toArgList arg
     in (name <> parens argsTLB, argsVals)
 
+-- | (Internal) An unsafe SQL function to extract a subfield from a compound
+-- field, e.g. datetime. See 'unsafeSqlBinOp' for warnings.
+--
+-- Since: 1.3.6.
+unsafeSqlExtractSubField :: UnsafeSqlFunctionArgument a =>
+                     TLB.Builder -> a -> SqlExpr (Value b)
+unsafeSqlExtractSubField subField arg =
+  ERaw Never $ \info ->
+    let (argsTLB, argsVals) =
+          uncommas' $ map (\(ERaw _ f) -> f info) $ toArgList arg
+    in ("EXTRACT" <> parens (subField <> " FROM " <> argsTLB), argsVals)
+
+
 class UnsafeSqlFunctionArgument a where
   toArgList :: a -> [SqlExpr (Value ())]
 instance (a ~ Value b) => UnsafeSqlFunctionArgument (SqlExpr a) where
@@ -501,6 +515,7 @@
          , UnsafeSqlFunctionArgument d
          ) => UnsafeSqlFunctionArgument (a, b, c, d) where
   toArgList = toArgList . from4
+
 
 
 -- | (Internal) Coerce a value's type from 'SqlExpr (Value a)' to
