diff --git a/util/dbutil/common.go b/util/dbutil/common.go index 108e10f01b5f1..4ceb0c08d36da 100644 --- a/util/dbutil/common.go +++ b/util/dbutil/common.go @@ -320,9 +320,7 @@ func GetTimeZoneOffset(ctx context.Context, db QueryExecutor) (time.Duration, er hour, minute, second := t.Clock() // nolint:durationcheck - return (time.Duration(hour)*time.Hour + - time.Duration(minute)*time.Minute + - time.Duration(second)*time.Second) * factor * time.Second, nil + return time.Duration(hour*3600+minute*60+second) * time.Second * factor, nil } // FormatTimeZoneOffset is to format offset of timezone. diff --git a/util/dbutil/common_test.go b/util/dbutil/common_test.go index 543cebc190e38..d7acd6174b17c 100644 --- a/util/dbutil/common_test.go +++ b/util/dbutil/common_test.go @@ -245,3 +245,14 @@ func TestFormatTimeZoneOffset(t *testing.T) { require.Equal(t, offset, k) } } + +func TestGetTimeZoneOffset(t *testing.T) { + db, mock, err := sqlmock.New() + require.NoError(t, err) + + mock.ExpectQuery("SELECT cast\\(TIMEDIFF\\(NOW\\(6\\), UTC_TIMESTAMP\\(6\\)\\) as time\\);"). + WillReturnRows(mock.NewRows([]string{""}).AddRow("01:00:00")) + d, err := GetTimeZoneOffset(context.Background(), db) + require.NoError(t, err) + require.Equal(t, "1h0m0s", d.String()) +}