{"id":"c2ea5a5daed1bb1e","repo":"jackc/pgx","slug":"invalid-date-format","errorCode":null,"errorMessage":"invalid date format","messagePattern":"invalid date format","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pgtype/date.go","lineNumber":289,"sourceCode":"func (scanPlanTextAnyToDateScanner) Scan(src []byte, dst any) error {\n\tscanner := (dst).(DateScanner)\n\n\tif src == nil {\n\t\treturn scanner.ScanDate(Date{})\n\t}\n\n\t// Check infinity cases first\n\tif len(src) == 8 && string(src) == \"infinity\" {\n\t\treturn scanner.ScanDate(Date{InfinityModifier: Infinity, Valid: true})\n\t}\n\tif len(src) == 9 && string(src) == \"-infinity\" {\n\t\treturn scanner.ScanDate(Date{InfinityModifier: -Infinity, Valid: true})\n\t}\n\n\t// Format: YYYY-MM-DD or YYYY...-MM-DD BC\n\t// Minimum: 10 chars (2000-01-01), with BC: 13 chars\n\tif len(src) < 10 {\n\t\treturn fmt.Errorf(\"invalid date format\")\n\t}\n\n\t// Check for BC suffix\n\tbc := false\n\tdatePart := src\n\tif len(src) >= 13 && string(src[len(src)-3:]) == \" BC\" {\n\t\tbc = true\n\t\tdatePart = src[:len(src)-3]\n\t}\n\n\t// Find year-month separator (first dash after at least 4 digits)\n\tyearEnd := -1\n\tfor i := 4; i < len(datePart); i++ {\n\t\tif datePart[i] == '-' {\n\t\t\tyearEnd = i\n\t\t\tbreak\n\t\t}\n\t\tif datePart[i] < '0' || datePart[i] > '9' {","sourceCodeStart":271,"sourceCodeEnd":307,"githubUrl":"https://github.com/jackc/pgx/blob/ec1a0befd22592cffffdeeb0a50311b506372f4c/pgtype/date.go#L271-L307","documentation":"Error \"invalid date format\" thrown in jackc/pgx.","triggerScenarios":"Thrown at pgtype/date.go:289 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"ec1a0befd22592cffffdeeb0a50311b506372f4c","analyzedAt":"2026-08-04T22:52:11.263Z","schemaVersion":2}