{"record":{"id":"d5bbae29607844b5","repo":"getredash/redash","slug":"unknown-date-time-format-in-results","errorCode":null,"errorMessage":"Unknown date/time format in results: '{}'","messagePattern":"Unknown date/time format in results: '(.+?)'","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"redash/query_runner/google_analytics.py","lineNumber":81,"sourceCode":"                if \"primitiveValue\" in value:\n                    value = value[\"primitiveValue\"]\n                elif \"conversionPathValue\" in value:\n                    steps = []\n                    for step in value[\"conversionPathValue\"]:\n                        steps.append(\"{}:{}\".format(step[\"interactionType\"], step[\"nodeValue\"]))\n                    value = \", \".join(steps)\n                else:\n                    raise Exception(\"Results format not supported\")\n\n            if column_type == TYPE_DATE:\n                value = datetime.strptime(value, \"%Y%m%d\")\n            elif column_type == TYPE_DATETIME:\n                if len(value) == 10:\n                    value = datetime.strptime(value, \"%Y%m%d%H\")\n                elif len(value) == 12:\n                    value = datetime.strptime(value, \"%Y%m%d%H%M\")\n                else:\n                    raise Exception(\"Unknown date/time format in results: '{}'\".format(value))\n\n            d[column_name] = value\n        rows.append(d)\n\n    return {\"columns\": columns, \"rows\": rows}\n\n\nclass GoogleAnalytics(BaseSQLQueryRunner):\n    should_annotate_query = False\n\n    @classmethod\n    def type(cls):\n        return \"google_analytics\"\n\n    @classmethod\n    def name(cls):\n        return \"Google Analytics\"\n","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/getredash/redash/blob/ca79fe988d81cdac9675b412f3dfcab107bc1fbc/redash/query_runner/google_analytics.py#L63-L99","documentation":"GA v3 returns date/datetime columns as compact strings (YYYYMMDD, YYYYMMDDHH, YYYYMMDDHHMM). parse_ga_response only accepts lengths 10 and 12 for TYPE_DATETIME; anything else (including the 8-char date form in a datetime column) raises 'Unknown date/time format in results'.","triggerScenarios":"A ga:dateHourNth (or sampled) column whose value length is not 10 or 12, or a value that is None/empty when the column type was inferred as datetime — e.g. '20240101' (length 8) in a datetime column.","commonSituations":"GA API changes adding new granularity (dateHourMinute variants), rows with missing values, or dimensions like ga:date paired with inferred datetime typing.","solutions":["Change the dimension/metric so values match YYYYMMDDHH or YYYYMMDDHHMM (e.g. use ga:dateHour, not ga:date, for datetime columns)","Cast the column to string/type BOOLEAN in the query's column hints if present","Upgrade Redash, where parsing of additional formats may be added"],"exampleFix":"// before\n{\"dimensions\": \"ga:date\"}\n// after\n{\"dimensions\": \"ga:dateHour\"}","handlingStrategy":"validation","validationCode":"def valid_datetime_len(v: str) -> bool:\n    return isinstance(v, str) and len(v) in (10, 12) and v.isdigit()","typeGuard":null,"tryCatchPattern":"try:\n    data = runner.run_query(q, user)\nexcept Exception as e:\n    if \"Unknown date/time format\" in str(e):\n        switch_dimension_to_date_and_retry()  # ga:date + date typing","preventionTips":["Use ga:dateHour for datetime columns","Ensure no empty values in datetime dimensions","Check value lengths in GA API docs before mapping types"],"tags":["google-analytics","date-parsing","datetime"],"backgroundTag":"date-parse-failure","analyzedSha":"ca79fe988d81cdac9675b412f3dfcab107bc1fbc","analyzedAt":"2026-08-28T18:32:34.637Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}