diff --git a/date.go b/date.go index 10e41fe7..37fb8302 100644 --- a/date.go +++ b/date.go @@ -37,6 +37,8 @@ func (dst *Date) Set(src interface{}) error { switch value := src.(type) { case time.Time: *dst = Date{Time: value, Status: Present} + case string: + return dst.DecodeText(nil, []byte(value)) default: if originalSrc, ok := underlyingTimeType(src); ok { return dst.Set(originalSrc) diff --git a/date_test.go b/date_test.go index 0b77898b..5c38e7a3 100644 --- a/date_test.go +++ b/date_test.go @@ -42,6 +42,7 @@ func TestDateSet(t *testing.T) { {source: time.Date(2000, 1, 2, 0, 0, 0, 0, time.UTC), result: pgtype.Date{Time: time.Date(2000, 1, 2, 0, 0, 0, 0, time.UTC), Status: pgtype.Present}}, {source: time.Date(2200, 1, 1, 0, 0, 0, 0, time.UTC), result: pgtype.Date{Time: time.Date(2200, 1, 1, 0, 0, 0, 0, time.UTC), Status: pgtype.Present}}, {source: _time(time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC)), result: pgtype.Date{Time: time.Date(1970, 1, 1, 0, 0, 0, 0, time.UTC), Status: pgtype.Present}}, + {source: "1999-12-31", result: pgtype.Date{Time: time.Date(1999, 12, 31, 0, 0, 0, 0, time.UTC), Status: pgtype.Present}}, } for i, tt := range successfulTests {