mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-28 02:21:59 +00:00
fix and update test
This commit is contained in:
parent
86cb9f7034
commit
e30297e599
@ -116,7 +116,7 @@ ReturnType parseDateTimeBestEffortImpl(
|
||||
bool is_am = false;
|
||||
bool is_pm = false;
|
||||
|
||||
bool has_comma_after_date = false;
|
||||
bool has_comma_between_date_and_time = false;
|
||||
|
||||
auto read_alpha_month = [&month] (const auto & alpha)
|
||||
{
|
||||
@ -139,11 +139,14 @@ ReturnType parseDateTimeBestEffortImpl(
|
||||
|
||||
while (!in.eof())
|
||||
{
|
||||
if (year && month && day_of_month && *in.position() == ',')
|
||||
if ((year && !has_time) || (!year && has_time))
|
||||
{
|
||||
has_comma_after_date = true;
|
||||
if (*in.position() == ',')
|
||||
{
|
||||
has_comma_between_date_and_time = true;
|
||||
++in.position();
|
||||
}
|
||||
}
|
||||
|
||||
char digits[std::numeric_limits<UInt64>::digits10];
|
||||
|
||||
@ -561,7 +564,7 @@ ReturnType parseDateTimeBestEffortImpl(
|
||||
}
|
||||
|
||||
//// Date like '2022/03/04, ' should parse fail?
|
||||
if (has_comma_after_date && !has_time)
|
||||
if (has_comma_between_date_and_time && (!has_time || !year || !month || !day_of_month))
|
||||
return on_error("Cannot read DateTime: unexpected word after Date", ErrorCodes::CANNOT_PARSE_DATETIME);
|
||||
|
||||
/// If neither Date nor Time is parsed successfully, it should fail
|
||||
|
@ -0,0 +1,10 @@
|
||||
2017-12-01 18:31:44
|
||||
2017-01-12 18:31:44
|
||||
2017-12-01 18:31:44
|
||||
2017-01-12 18:31:44
|
||||
2017-12-01 18:31:44
|
||||
2017-01-12 18:31:44
|
||||
2015-12-31 18:31:44
|
||||
2015-12-31 18:31:44
|
||||
2015-12-31 18:31:44
|
||||
2015-12-31 18:31:44
|
@ -0,0 +1,16 @@
|
||||
select parseDateTimeBestEffort('01/12/2017, 18:31:44');
|
||||
select parseDateTimeBestEffortUS('01/12/2017, 18:31:44');
|
||||
select parseDateTimeBestEffort('01/12/2017,18:31:44');
|
||||
select parseDateTimeBestEffortUS('01/12/2017,18:31:44');
|
||||
select parseDateTimeBestEffort('01/12/2017 , 18:31:44');
|
||||
select parseDateTimeBestEffortUS('01/12/2017 ,18:31:44');
|
||||
select parseDateTimeBestEffortUS('18:31:44, 31/12/2015');
|
||||
select parseDateTimeBestEffortUS('18:31:44 , 31/12/2015');
|
||||
select parseDateTimeBestEffort('18:31:44, 31/12/2015');
|
||||
select parseDateTimeBestEffort('18:31:44 , 31/12/2015');
|
||||
select parseDateTimeBestEffort('01/12/2017,'); -- { serverError CANNOT_PARSE_DATETIME }
|
||||
select parseDateTimeBestEffortUS('18:31:44,,,, 31/12/2015'); -- { serverError CANNOT_PARSE_DATETIME }
|
||||
select parseDateTimeBestEffortUS('18:31:44, 31/12/2015,'); -- { serverError CANNOT_PARSE_TEXT }
|
||||
select parseDateTimeBestEffort('01/12/2017, 18:31:44,'); -- { serverError CANNOT_PARSE_TEXT }
|
||||
select parseDateTimeBestEffort('01/12/2017, ,,,18:31:44'); -- { serverError CANNOT_PARSE_DATETIME }
|
||||
select parseDateTimeBestEffort('18:31:44 ,,,,, 31/12/2015'); -- { serverError CANNOT_PARSE_DATETIME }
|
@ -1,4 +0,0 @@
|
||||
2017-12-01 18:31:44
|
||||
2017-01-12 18:31:44
|
||||
2017-12-01 18:31:44
|
||||
2017-01-12 18:31:44
|
@ -1,5 +0,0 @@
|
||||
select parseDateTimeBestEffort('01/12/2017, 18:31:44');
|
||||
select parseDateTimeBestEffortUS('01/12/2017, 18:31:44');
|
||||
select parseDateTimeBestEffort('01/12/2017,18:31:44');
|
||||
select parseDateTimeBestEffortUS('01/12/2017,18:31:44');
|
||||
select parseDateTimeBestEffort('01/12/2017,'); -- { serverError CANNOT_PARSE_DATETIME}
|
Loading…
Reference in New Issue
Block a user