From 8b9ff38208420675acc3fec123e67a165ed3d0fb Mon Sep 17 00:00:00 2001 From: Robin Tang Date: Thu, 19 Sep 2024 13:09:12 -0700 Subject: [PATCH] PR Feedback. --- lib/typing/ext/parse_test.go | 15 +++++++++++++++ lib/typing/ext/variables.go | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/typing/ext/parse_test.go b/lib/typing/ext/parse_test.go index 63510b76b..a0e387818 100644 --- a/lib/typing/ext/parse_test.go +++ b/lib/typing/ext/parse_test.go @@ -37,11 +37,26 @@ func TestParseFromInterface(t *testing.T) { assert.ErrorContains(t, err, "failed to parse colVal, expected type string or *ExtendedTime and got: bool") } { + // String - RFC3339MillisecondUTC value, err := ParseFromInterface("2024-09-19T16:05:18.630Z", TimestampTzKindType) assert.NoError(t, err) assert.Equal(t, "2024-09-19T16:05:18.630Z", value.String("")) assert.Equal(t, RFC3339MillisecondUTC, value.nestedKind.Format) } + { + // String - RFC3339MicrosecondUTC + value, err := ParseFromInterface("2024-09-19T16:05:18.630000Z", TimestampTzKindType) + assert.NoError(t, err) + assert.Equal(t, "2024-09-19T16:05:18.630000Z", value.String("")) + assert.Equal(t, RFC3339MicrosecondUTC, value.nestedKind.Format) + } + { + // String - RFC3339NanosecondUTC + value, err := ParseFromInterface("2024-09-19T16:05:18.630000000Z", TimestampTzKindType) + assert.NoError(t, err) + assert.Equal(t, "2024-09-19T16:05:18.630000000Z", value.String("")) + assert.Equal(t, RFC3339NanosecondUTC, value.nestedKind.Format) + } } func TestParseFromInterfaceDateTime(t *testing.T) { diff --git a/lib/typing/ext/variables.go b/lib/typing/ext/variables.go index bda6d8812..8d4f413ab 100644 --- a/lib/typing/ext/variables.go +++ b/lib/typing/ext/variables.go @@ -11,8 +11,16 @@ const ( ) var supportedDateTimeLayouts = []string{ + // UTC RFC3339MillisecondUTC, + RFC3339MicrosecondUTC, + RFC3339NanosecondUTC, + // RFC 3339 + RFC3339Millisecond, + RFC3339Microsecond, + RFC3339Nanosecond, time.RFC3339Nano, + // Others ISO8601, time.Layout, time.ANSIC, @@ -39,6 +47,8 @@ var SupportedTimeFormats = []string{ // RFC3339 variants const ( RFC3339MillisecondUTC = "2006-01-02T15:04:05.000Z" + RFC3339MicrosecondUTC = "2006-01-02T15:04:05.000000Z" + RFC3339NanosecondUTC = "2006-01-02T15:04:05.000000000Z" RFC3339Millisecond = "2006-01-02T15:04:05.000Z07:00" RFC3339Microsecond = "2006-01-02T15:04:05.000000Z07:00" RFC3339Nanosecond = "2006-01-02T15:04:05.000000000Z07:00"