Add date_time_input_format = best_effort_us

This commit is contained in:
cwkyaoyao 2022-03-02 16:00:06 +08:00
parent ba9150abb0
commit 72194bbaf3
5 changed files with 12 additions and 4 deletions

View File

@ -620,7 +620,7 @@ class IColumn;
M(MsgPackUUIDRepresentation, output_format_msgpack_uuid_representation, FormatSettings::MsgPackUUIDRepresentation::EXT, "The way how to output UUID in MsgPack format.", 0) \
M(UInt64, input_format_max_rows_to_read_for_schema_inference, 100, "The maximum rows of data to read for automatic schema inference", 0) \
\
M(DateTimeInputFormat, date_time_input_format, FormatSettings::DateTimeInputFormat::Basic, "Method to read DateTime from text input formats. Possible values: 'basic' and 'best_effort'.", 0) \
M(DateTimeInputFormat, date_time_input_format, FormatSettings::DateTimeInputFormat::Basic, "Method to read DateTime from text input formats. Possible values: 'basic', 'best_effort' and 'best_effort_us'.", 0) \
M(DateTimeOutputFormat, date_time_output_format, FormatSettings::DateTimeOutputFormat::Simple, "Method to write DateTime to text output. Possible values: 'simple', 'iso', 'unix_timestamp'.", 0) \
\
M(String, bool_true_representation, "true", "Text to represent bool value in TSV/CSV formats.", 0) \

View File

@ -64,7 +64,8 @@ IMPLEMENT_SETTING_ENUM(DistributedProductMode, ErrorCodes::UNKNOWN_DISTRIBUTED_P
IMPLEMENT_SETTING_ENUM_WITH_RENAME(DateTimeInputFormat, ErrorCodes::BAD_ARGUMENTS,
{{"basic", FormatSettings::DateTimeInputFormat::Basic},
{"best_effort", FormatSettings::DateTimeInputFormat::BestEffort}})
{"best_effort", FormatSettings::DateTimeInputFormat::BestEffort},
{"best_effort_us", FormatSettings::DateTimeInputFormat::BestEffortUS}})
IMPLEMENT_SETTING_ENUM_WITH_RENAME(DateTimeOutputFormat, ErrorCodes::BAD_ARGUMENTS,

View File

@ -27,6 +27,9 @@ inline void readText(time_t & x, ReadBuffer & istr, const FormatSettings & setti
case FormatSettings::DateTimeInputFormat::BestEffort:
parseDateTimeBestEffort(x, istr, time_zone, utc_time_zone);
return;
case FormatSettings::DateTimeInputFormat::BestEffortUS:
parseDateTimeBestEffortUS(x, istr, time_zone, utc_time_zone);
return;
}
}

View File

@ -69,6 +69,9 @@ static inline void readText(DateTime64 & x, UInt32 scale, ReadBuffer & istr, con
case FormatSettings::DateTimeInputFormat::BestEffort:
parseDateTime64BestEffort(x, scale, istr, time_zone, utc_time_zone);
return;
case FormatSettings::DateTimeInputFormat::BestEffortUS:
parseDateTime64BestEffortUS(x, scale, istr, time_zone, utc_time_zone);
return;
}
}

View File

@ -38,8 +38,9 @@ struct FormatSettings
enum class DateTimeInputFormat
{
Basic, /// Default format for fast parsing: YYYY-MM-DD hh:mm:ss (ISO-8601 without fractional part and timezone) or NNNNNNNNNN unix timestamp.
BestEffort /// Use sophisticated rules to parse whatever possible.
Basic, /// Default format for fast parsing: YYYY-MM-DD hh:mm:ss (ISO-8601 without fractional part and timezone) or NNNNNNNNNN unix timestamp.
BestEffort, /// Use sophisticated rules to parse whatever possible.
BestEffortUS /// Use sophisticated rules to parse American style: mm/dd/yyyy
};
DateTimeInputFormat date_time_input_format = DateTimeInputFormat::Basic;