У вас уже есть даты.Перестаньте так усердно работать, и пусть ваши даты будут датами.
declare @t table (order_confirmation_date datetime2);
insert @t
values ('20190524'),('20190722'),(CAST(GETDATE() AS date))
SELECT
fpo.order_confirmation_date,
datediff(day, CAST(getdate() AS date),fpo.order_confirmation_date)
AS ordconf_x_days_fromtoday
FROM @t fpo
Результаты:
+-----------------------------+--------------------------+
| order_confirmation_date | ordconf_x_days_fromtoday |
+-----------------------------+--------------------------+
| 2019-05-24 00:00:00.0000000 | -19 |
| 2019-07-22 00:00:00.0000000 | 40 |
| 2019-06-12 00:00:00.0000000 | 0 |
+-----------------------------+--------------------------+
Редактировать: Если вы хотите, чтобы даты в прошлом возвращали NULL
:
SELECT
fpo.order_confirmation_date,
CASE
WHEN fpo.order_confirmation_date < GETDATE() THEN NULL
ELSE datediff(day, CAST(getdate() AS date),fpo.order_confirmation_date)
END AS ordconf_x_days_fromtoday
FROM @t fpo