This is ok:
# select '23:59:60'::time;
time
──────────
24:00:00
# select '23:59:61'::time;
ERROR: 22008: date/time field value out of range: "23:59:61"
This is not ok:
# select '23:59:60.999'::time;
time
──────────────
24:00:00.999
-- value isn't read back:
# select '24:00:00.999'::time;
ERROR: 22008: date/time field value out of range: "24:00:00.999"
-- we can even go to :01
# select '23:59:60.9999999'::time;
time
──────────
24:00:01
PG 12.3.
Christoph