{"record":{"id":"1b86ff649959b331","repo":"quickwit-oss/quickwit","slug":"failed-to-parse-range-query-date-format-err","errorCode":null,"errorMessage":"failed to parse range query date format. {err}","messagePattern":"failed to parse range query date format\\. (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-query/src/elastic_query_dsl/range_query.rs","lineNumber":94,"sourceCode":"                gte = Some(from_val);\n            } else {\n                gt = Some(from_val);\n            }\n        }\n        if let Some(to_val) = to\n            && lt.is_none()\n            && lte.is_none()\n        {\n            if include_upper.unwrap_or(true) {\n                lte = Some(to_val);\n            } else {\n                lt = Some(to_val);\n            }\n        }\n\n        let (gt, gte, lt, lte) = if let Some(JsonLiteral::String(java_date_format)) = format {\n            let parser = StrptimeParser::from_java_datetime_format(&java_date_format)\n                .map_err(|err| anyhow::anyhow!(\"failed to parse range query date format. {err}\"))?;\n            (\n                gt.map(|v| parse_and_convert(v, &parser)).transpose()?,\n                gte.map(|v| parse_and_convert(v, &parser)).transpose()?,\n                lt.map(|v| parse_and_convert(v, &parser)).transpose()?,\n                lte.map(|v| parse_and_convert(v, &parser)).transpose()?,\n            )\n        } else {\n            (gt, gte, lt, lte)\n        };\n\n        let range_query_ast = crate::query_ast::RangeQuery {\n            field,\n            lower_bound: match (gt, gte) {\n                (Some(_gt), Some(_gte)) => {\n                    anyhow::bail!(\"both gt and gte are set\")\n                }\n                (Some(gt), None) => Bound::Excluded(gt),\n                (None, Some(gte)) => Bound::Included(gte),","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-query/src/elastic_query_dsl/range_query.rs#L76-L112","documentation":"When a range query specifies a date format (JsonLiteral::String interpreted as a Java date-time format), convert_to_query_ast builds a StrptimeParser from it via from_java_datetime_format. This error is raised when that Java format string itself cannot be parsed into a valid strptime pattern.","triggerScenarios":"Sending an ES-compatible range query with a \"format\" field containing an invalid or unsupported Java datetime pattern (e.g. malformed pattern like \"yyyy-MM-ddd\" or unsupported directives) to the query DSL parser.","commonSituations":"Copy-pasted Elasticsearch date formats with directives Quickwit's parser doesn't support; typos in format strings; mixing strftime and Java format syntaxes.","solutions":["Fix the format string to a supported Java datetime pattern (e.g. \"yyyy-MM-dd'T'HH:mm:ss.SSSXXX\")","Remove the format field and use RFC3339/ISO8601 date literals instead (the default)","Check the error's inner message for which directive failed and consult StrptimeParser::from_java_datetime_format docs for supported directives","Test the format string in isolation before embedding it in the query"],"exampleFix":"// before\n{\"range\": {\"ts\": {\"gte\": \"2024-01-01\", \"format\": \"yyyy-MM-ddd HH:mm\"}}}\n// after\n{\"range\": {\"ts\": {\"gte\": \"2024-01-01\", \"format\": \"yyyy-MM-dd HH:mm\"}}}","handlingStrategy":"validation","validationCode":"if let Some(JsonLiteral::String(fmt)) = &format {\n    StrptimeParser::from_java_datetime_format(fmt).map_err(|e| format!(\"invalid format '{fmt}': {e}\"))?;\n}","typeGuard":null,"tryCatchPattern":"try {\n    build_range_query(json)\n} catch (e) {\n    if (e.message.includes('failed to parse range query date format')) { /* drop format or fix pattern */ }\n    throw e;\n}","preventionTips":["Use only documented Java datetime directives in the format field","Prefer RFC3339 literals and omit custom formats","Lint query templates for known-bad patterns before sending"],"tags":["query-dsl","date-format","parsing","elasticsearch-compat"],"backgroundTag":"invalid-date-format","analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}