From 816e95d3ee8c18d3f9faf691208bdab11446461d Mon Sep 17 00:00:00 2001 From: Andrew Nicoll Date: Fri, 27 Mar 2020 13:03:36 +0000 Subject: [PATCH] sanatize time to within microsecond accuracy --- internal/sanitize/sanitize.go | 2 +- internal/sanitize/sanitize_test.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/sanitize/sanitize.go b/internal/sanitize/sanitize.go index 06ec238a..0e7ddf13 100644 --- a/internal/sanitize/sanitize.go +++ b/internal/sanitize/sanitize.go @@ -48,7 +48,7 @@ func (q *Query) Sanitize(args ...interface{}) (string, error) { case string: str = QuoteString(arg) case time.Time: - str = arg.Format("'2006-01-02 15:04:05.999999999Z07:00:00'") + str = arg.Truncate(time.Microsecond).Format("'2006-01-02 15:04:05.999999999Z07:00:00'") default: return "", errors.Errorf("invalid arg type: %T", arg) } diff --git a/internal/sanitize/sanitize_test.go b/internal/sanitize/sanitize_test.go index a4f8c6de..fff14896 100644 --- a/internal/sanitize/sanitize_test.go +++ b/internal/sanitize/sanitize_test.go @@ -2,6 +2,7 @@ package sanitize_test import ( "testing" + "time" "github.com/jackc/pgx/v4/internal/sanitize" ) @@ -130,6 +131,11 @@ func TestQuerySanitize(t *testing.T) { args: []interface{}{`foo\'bar`}, expected: `select 'foo\''bar'`, }, + { + query: sanitize.Query{Parts: []sanitize.Part{"insert ", 1}}, + args: []interface{}{time.Date(2020, time.March, 1, 23, 59, 59, 999999999, time.UTC)}, + expected: `insert '2020-03-01 23:59:59.999999Z'`, + }, } for i, tt := range successfulTests {