Fixed
- Rows in the last second of a range are kept (#270, thanks @wit3) — the end of a range is the last microsecond of the picked day, month, year or minute, but Laravel binds dates as
Y-m-d H:i:s, sowhereBetween()compared against23:59:59and dropped rows stored in that last second with a fraction (23:59:59.500). That affects any column that keeps fractions: Postgres's defaulttimestamp,timestamp(3), MySQLDATETIME(6). The filter now uses>= startand< the next whole second: nothing is lost, no instant is counted in two adjacent ranges, and the condition stays on the bare column, so indexes are used as before. - README: the
modifyQueryUsing()example compares with the next whole second too, and guards on$startDate && $endDate(both are null when a persisted state can't be read).
Notes
- The
modifyQueryUsing()callback still receives the same inclusive$endDate, anddatecolumns are unchanged. - On SQLite, a value written by raw SQL without seconds (
'2026-08-12'or'2026-08-12 00:00'in a datetime column) now falls in the day before; values written by Eloquent (Y-m-d H:i:s) are unaffected.
No asset changes; php artisan filament:assets isn't needed for this release.