pocketbase/pocketbase · error
@yearStart: %w
Error message
@yearStart: %w
What it means
Thrown by the `@yearStart` macro when `types.ParseDateTime` fails on the January 1st UTC midnight timestamp. Only reachable when resolving filters such as `created >= @yearStart`. The constructed date is trivially valid, making this a defensive error against datetime parser changes.
Source
Thrown at tools/search/identifier_macros.go:119
"@monthEnd": func() (any, error) {
today := timeNow().UTC()
start := time.Date(today.Year(), today.Month(), 1, 23, 59, 59, 999999999, time.UTC)
end := start.AddDate(0, 1, -1)
d, err := types.ParseDateTime(end)
if err != nil {
return "", fmt.Errorf("@monthEnd: %w", err)
}
return d.String(), nil
},
"@yearStart": func() (any, error) {
today := timeNow().UTC()
start := time.Date(today.Year(), 1, 1, 0, 0, 0, 0, time.UTC)
d, err := types.ParseDateTime(start)
if err != nil {
return "", fmt.Errorf("@yearStart: %w", err)
}
return d.String(), nil
},
"@yearEnd": func() (any, error) {
today := timeNow().UTC()
end := time.Date(today.Year(), 12, 31, 23, 59, 59, 999999999, time.UTC)
d, err := types.ParseDateTime(end)
if err != nil {
return "", fmt.Errorf("@yearEnd: %w", err)
}
return d.String(), nil
},
}
View on GitHub (pinned to 5d217ddb50)
Solutions
- Update PocketBase
- Use an explicit `'YYYY-01-01 00:00:00.000Z'` literal
- Report a parser regression if reproducible on stock code
Example fix
// before filter := "created >= @yearStart" // after filter := "created >= '2026-01-01 00:00:00.000Z'"
Defensive patterns
Strategy: try-catch
Validate before calling
null
Type guard
null
Try / catch
result, err := search.FilterData(f, resolver)
if err != nil && strings.Contains(err.Error(), "@yearStart:") {
// retry with explicit Jan 1 literal
} Prevention
- Keep packages version-aligned
- Use literals for stored filters
- Regression-test macros after upgrades
When it happens
Trigger: A filter expression using `@yearStart` where `types.ParseDateTime` rejects the Jan 1 00:00:00 UTC value.
Common situations: Forked or outdated datetime parsers; effectively unreachable on stock builds.
Related errors
AI-assisted analysis of pocketbase/pocketbase@5d217ddb50 (2026-08-15).
Data as JSON: /api/errors/9de1f65d290200e9.
Report an issue: GitHub.