К счастью, ГГГГММДД заканчивается естественным порядком.Таким образом, вместо того, чтобы анализировать записи, почему бы не просто «отформатировать» дату года назад и сравнить ее с этим?
Неясно, откуда именно вы это называете, и можете ли вы предоставитьлогика есть, но если нет, и это внутри хранимой процедуры, вы всегда можете поместить логику туда.В основном вы хотите иметь что-то вроде (псевдокод):
CUTOFF = CURRENT_DATE - 1 YEAR
CUTOFF_NUMERIC = CUTOFF.YEAR * 10000 + CUTOFF.MONTH * 100 + CUTOFF.DAY
SELECT ... FROM A WHERE A.CPADDT > CUTOFF_NUMERIC
Извинения за невозможность дать вам фактический код - я не знаком с этим диалектом SQLи я в любом случае далеко не эксперт по SQL.Надеюсь, этого предложения хватит, чтобы вы пошли.Обратите внимание, что это также должно помочь с точки зрения производительности - если у вас есть индекс на CPADDT
, тогда этот запрос может использовать его легко, тогда как ваша первоначальная попытка, вероятно, не сможет.Даже если у вас нет индекса, простое числовое сравнение, вероятно, будет дешевле, чем все это форматирование и анализ.