in encoder/msgpack.go [73:100]
func (e *msgPackEncoder) fixFieldType(dtype string, f interface{}) interface{} {
switch v := f.(type) {
case int64:
switch dtype {
case "int", "integer", "tinyint", "smallint", "mediumint", "year":
return int32(v)
}
case time.Time:
switch dtype {
case "datetime":
return v.In(time.UTC)
case "timestamp":
if v.Equal(time.Time{}) {
return v.In(time.UTC)
}
return v.In(time.Local)
}
//There is one corner case when time can be encoded as string it's 0000-00-00 00:00:00
case string:
switch dtype {
case "datetime":
return ZeroTime
case "timestamp":
return ZeroTime
}
}
return f
}