Это действительные даты, но если у вас есть бизнес-правила, в которых говорится, что они недействительны для вашей цели, вы можете удалить их на основе этих правил:
Например, если вы не хотите, чтобы датыдо 1900 года или после 2999 года этот оператор будет удалять записи с такими датами:
DELETE FROM mytable
WHERE
start_date < '1900-01-01'::DATE OR
start_date >= '2999-01-01'::DATE OR
end_date < '1900-01-01'::DATE OR
end_date >= '2999-01-01'::DATE;
Если вы хотите заменить даты на самые низкие / самые приемлемые даты вместо удаления всей записи, вы можете сделатькак то так:
UPDATE mytable
SET
start_date = least('2999-01-01'::DATE, greatest('1900-01-01'::DATE, start_date)),
end_date = least('2999-01-01'::DATE, greatest('1900-01-01'::DATE, end_date))
WHERE
start_date < '1900-01-01'::DATE OR
start_date >= '2999-01-01'::DATE OR
end_date < '1900-01-01'::DATE OR
end_date >= '2999-01-01'::DATE;