Очевидно, что у вас неверные значения строки даты - поэтому значение должно быть сохранено как дата для начала.
Я не думаю, что в Redshift есть способ проверки даты перед попыткой сравнение или избежание ошибки. Но вы можете использовать case
и регулярные выражения, чтобы увидеть, является ли значение разумным. Это может помочь:
(case when left(adate, 10) ~ '^(19|20)[0-9][0-9]-[0-1][0-9]-[0-2][0-9]$'
then to_date(left(adate, 10), 'YYYY-MM-DD')
end)
Это не точно. , , Вы можете сделать его более сложным, чтобы 19-й месяц не был разрешен (например), но, скорее всего, он обнаружит ошибки.