diff --git a/source/common/src/ttime.c b/source/common/src/ttime.c index 385be92774..227de7f5fc 100644 --- a/source/common/src/ttime.c +++ b/source/common/src/ttime.c @@ -195,6 +195,10 @@ int32_t parseTimezone(char* str, int64_t* tzOffset) { } int32_t offsetOfTimezone(char* tzStr, int64_t* offset) { + if (tzStr && (tzStr[0] == 'z' || tzStr[0] == 'Z')) { + *offset = 0; + return 0; + } return parseTimezone(tzStr, offset); } diff --git a/tests/system-test/2-query/To_iso8601.py b/tests/system-test/2-query/To_iso8601.py index 92aacbb350..160473ffce 100644 --- a/tests/system-test/2-query/To_iso8601.py +++ b/tests/system-test/2-query/To_iso8601.py @@ -30,17 +30,16 @@ class TDTestCase: tdSql.query(f'select to_iso8601(ts) from {self.ntbname}') for i in range(self.rowNum): tdSql.checkEqual(tdSql.queryResult[i][0],f'2022-01-01T00:00:00.00{i}{time_zone}') - timezone_list = ['+0000','+0100','+0200','+0300','+0330','+0400','+0500','+0530','+0600','+0700','+0800','+0900','+1000','+1100','+1200',\ - '+00','+01','+02','+03','+04','+05','+06','+07','+08','+09','+10','+11','+12',\ - '+00:00','+01:00','+02:00','+03:00','+03:30','+04:00','+05:00','+05:30','+06:00','+07:00','+08:00','+09:00','+10:00','+11:00','+12:00',\ - '-0000','-0100','-0200','-0300','-0400','-0500','-0600','-0700','-0800','-0900','-1000','-1100','-1200',\ - '-00','-01','-02','-03','-04','-05','-06','-07','-08','-09','-10','-11','-12',\ - '-00:00','-01:00','-02:00','-03:00','-04:00','-05:00','-06:00','-07:00','-08:00','-09:00','-10:00','-11:00','-12:00',\ - 'z','Z'] - for j in timezone_list: - tdSql.query(f'select to_iso8601(ts,"{j}") from {self.ntbname}') - for i in range(self.rowNum): - tdSql.checkEqual(tdSql.queryResult[i][0],f'2022-01-01T00:00:00.00{i}{j}') + + tz_list = ['+0000','+0530', '+00', '+06', '+00:00', '+12:00', '-0000', '-0900', '-00', '-05', '-00:00', '-03:00','z', 'Z'] + res_list = ['2021-12-31T16:00:00.000+0000', '2021-12-31T21:30:00.000+0530', '2021-12-31T16:00:00.000+00', '2021-12-31T22:00:00.000+06',\ + '2021-12-31T16:00:00.000+00:00', '2022-01-01T04:00:00.000+12:00','2021-12-31T16:00:00.000-0000','2021-12-31T07:00:00.000-0900',\ + '2021-12-31T16:00:00.000-00', '2021-12-31T11:00:00.000-05','2021-12-31T16:00:00.000-00:00','2021-12-31T13:00:00.000-03:00',\ + '2021-12-31T16:00:00.000z', '2021-12-31T16:00:00.000Z'] + for i in range(len(tz_list)): + tdSql.query(f'select to_iso8601(ts,"{tz_list[i]}") from {self.ntbname} where c1==1') + tdSql.checkEqual(tdSql.queryResult[0][0],res_list[i]) + error_param_list = [0,100.5,'a','!'] for i in error_param_list: tdSql.error(f'select to_iso8601(ts,"{i}") from {self.ntbname}')