`select parseDateTimeBestEffort('01/12/2017, 18:31:44')`

It is confused by a comma - should be easy to fix.
}
            else if (num_digits == 4 && !year)
            {
                
                
                
                
                
                
                readDecimalNumber<4>(year, digits);
                if (!in.eof())
                {
                    char delimiter_after_year = *in.position();
                    if (delimiter_after_year < 0x20
                        || delimiter_after_year == ','
                        || delimiter_after_year == ';'
                        || delimiter_after_year == '\''
                        || delimiter_after_year == '"')
                        break;
                    if (month)
                        continue;
                    ++in.position();
                    num_digits = readDigits(digits, sizeof(digits), in);
                    if (num_digits == 2)
                        readDecimalNumber<2>(month, digits);
                    else if (num_digits == 1)
                        readDecimalNumber<1>(month, digits);
                    else if (delimiter_after_year == ' ')
                        continue;
                    else