diff --git a/lib/sqlbuilder/builder.go b/lib/sqlbuilder/builder.go
index 9993bd90041da48e93e7b88251afb08594f94db1..bbaa08f847246acdf4389caf2b51bca0e2d7971e 100644
--- a/lib/sqlbuilder/builder.go
+++ b/lib/sqlbuilder/builder.go
@@ -15,6 +15,10 @@ import (
 	"upper.io/db.v2/lib/reflectx"
 )
 
+type hasIsZero interface {
+	IsZero() bool
+}
+
 type hasArguments interface {
 	Arguments() []interface{}
 }
@@ -215,7 +219,11 @@ func Map(item interface{}) ([]string, []interface{}, error) {
 			}
 
 			if _, ok := fi.Options["omitempty"]; ok {
-				if value == fi.Zero.Interface() {
+				if t, ok := fld.Interface().(hasIsZero); ok {
+					if t.IsZero() {
+						continue
+					}
+				} else if value == fi.Zero.Interface() {
 					continue
 				}
 			}