## Proposed changes pick https://github.com/apache/doris/pull/37358 before: ```sql mysql> select CONVERT_TZ(cast('0000-01-01 00:00:00.00001' as DATETIMEV1), cast('Asia/Shanghai' as VARCHAR(65533)), cast('America/Los_Angeles' as VARCHAR(65533))); +---------------------------------------------------------------------------------------------------------------------------------------------------+ | convert_tz(cast('0000-01-01 00:00:00.00001' as DATETIME), cast('Asia/Shanghai' as VARCHAR(65533)), cast('America/Los_Angeles' as VARCHAR(65533))) | +---------------------------------------------------------------------------------------------------------------------------------------------------+ | q535-12-31 08:01:19 | +---------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.12 sec) ``` now: ```sql mysql> select CONVERT_TZ(cast('0000-01-01 00:00:00.00001' as DATETIMEV1), cast('Asia/Shanghai' as VARCHAR(65533)), cast('America/Los_Angeles' as VARCHAR(65533))); +---------------------------------------------------------------------------------------------------------------------------------------------------+ | convert_tz(cast('0000-01-01 00:00:00.00001' as DATETIME), cast('Asia/Shanghai' as VARCHAR(65533)), cast('America/Los_Angeles' as VARCHAR(65533))) | +---------------------------------------------------------------------------------------------------------------------------------------------------+ | NULL | +---------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.09 sec) ```
This commit is contained in:
@ -203,43 +203,26 @@ TEST(VTimestampFunctionsTest, timediff_test) {
|
||||
}
|
||||
|
||||
TEST(VTimestampFunctionsTest, convert_tz_test) {
|
||||
GTEST_SKIP() << "Skip temporarily. need fix";
|
||||
std::string func_name = "convert_tz";
|
||||
|
||||
TimezoneUtils::clear_timezone_caches();
|
||||
TimezoneUtils::load_timezones_to_cache();
|
||||
|
||||
InputTypeSet input_types = {TypeIndex::DateTimeV2, TypeIndex::String, TypeIndex::String};
|
||||
|
||||
bool case_sensitive = true;
|
||||
cctz::time_zone tz {};
|
||||
if (TimezoneUtils::find_cctz_time_zone("Asia/SHANGHAI", tz)) {
|
||||
case_sensitive = false;
|
||||
}
|
||||
|
||||
if (case_sensitive) {
|
||||
DataSet data_set = {{{std::string {"2019-08-01 02:18:27"}, std::string {"Asia/SHANGHAI"},
|
||||
std::string {"america/Los_angeles"}},
|
||||
Null()}};
|
||||
static_cast<void>(
|
||||
check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set, false));
|
||||
}
|
||||
|
||||
{
|
||||
DataSet data_set = {{{std::string {"2019-08-01 02:18:27"}, std::string {"Asia/Shanghai"},
|
||||
std::string {"UTC"}},
|
||||
str_to_datetime_v2("2019-07-31 18:18:27", "%Y-%m-%d %H:%i:%s.%f")},
|
||||
{{std::string {"2019-08-01 02:18:27"}, std::string {"Asia/Shanghai"},
|
||||
std::string {"UTC"}},
|
||||
str_to_datetime_v2("2019-07-31 18:18:27", "%Y-%m-%d %H:%i:%s.%f")}};
|
||||
if (case_sensitive) {
|
||||
data_set.push_back(Row {{std::string {"2019-08-01 02:18:27"},
|
||||
std::string {"Asia/Shanghai"}, std::string {"Utc"}},
|
||||
Null()});
|
||||
data_set.push_back(
|
||||
Row {{std::string {"2019-08-01 02:18:27"}, std::string {"Asia/SHANGHAI"},
|
||||
std::string {"america/Los_angeles"}},
|
||||
Null()});
|
||||
}
|
||||
str_to_datetime_v2("2019-07-31 18:18:27", "%Y-%m-%d %H:%i:%s.%f")},
|
||||
{{std::string {"0000-01-01 00:00:00"}, std::string {"+08:00"},
|
||||
std::string {"-02:00"}},
|
||||
Null()},
|
||||
{{std::string {"0000-01-01 00:00:00"}, std::string {"+08:00"},
|
||||
std::string {"+08:00"}},
|
||||
str_to_datetime_v2("0000-01-01 00:00:00", "%Y-%m-%d %H:%i:%s.%f")}};
|
||||
static_cast<void>(
|
||||
check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set, false));
|
||||
}
|
||||
@ -257,7 +240,6 @@ TEST(VTimestampFunctionsTest, convert_tz_test) {
|
||||
{{std::string {"2019-08-01 02:18:27"}, std::string {"Asia/SHANGHAI"},
|
||||
std::string {"america/Los_angeles"}},
|
||||
str_to_datetime_v2("2019-07-31 11:18:27", "%Y-%m-%d %H:%i:%s.%f")}};
|
||||
TimezoneUtils::load_timezones_to_cache();
|
||||
static_cast<void>(
|
||||
check_function<DataTypeDateTimeV2, true>(func_name, input_types, data_set, false));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user