Вы можете составить функции, подобные этой:
select str_to_date(trim('AM' from orderdate), '%m/%d/%Y')
Обратите внимание, что я также исправил ваш формат даты, чтобы он соответствовал вашим данным.На самом деле вам не нужно обрезать эти значения, чтобы использовать str_to_date
для них, просто это будет работать нормально:
select str_to_date(orderdate, '%m/%d/%Y')
Если вы хотите использовать это в предложении WHERE, тогда поместите туда вызовы функций:
select trim('AM' from orderdate), str_to_date(orderdate, '%m/%d/%Y')
from your_table
where str_to_date(orderdate, '%m/%d/%Y') > '2006-01-02'
и позволить оптимизатору распознать повтор или использовать производную таблицу:
select value, the_date
from (
select trim('AM' from orderdate) as value, str_to_date(orderdate, '%m/%d/%Y') as the_date
from your_table
) dt
where the_date > '2006-01-02'
Обратите внимание на использование в запросе ISO 8601 дат, чтоФормат однозначен, и любая база данных, которую стоит использовать, поймет это независимо от ваших настроек локали.
Я бы также порекомендовал вам исправить вашу схему, чтобы использовать реальные метки времени вместо этих строк.