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

  1. Update PocketBase
  2. Use an explicit `'YYYY-01-01 00:00:00.000Z'` literal
  3. 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

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.