diff --git a/query.go b/query.go
index e9e0e76..c12ebe7 100644
--- a/query.go
+++ b/query.go
@@ -370,7 +370,12 @@ func rerere(input interface{}, resType reflect.Type) interface{} {
 				intermediate := mipmap[btag.Name]
 				_, err = tags.Get("ref")
 				if err != nil {
-					tmp := rerere(intermediate, ft.Type)
+					var tmp interface{}
+					if ttmp, tok := intermediate.(bson.DateTime); tok {
+						tmp = ttmp.Time()
+					} else {
+						tmp = rerere(intermediate, ft.Type)
+					}
 					fuck := reflect.ValueOf(tmp)
 					if tmp != nil {
 						if fuck.Type().Kind() == reflect.Pointer {