Это будет выполнено только один раз. Вы можете проверить это дважды, проверив план выполнения («Вычислить скаляр» -> Расчетное количество выполнения == 1)
я есть такой запрос на Sql Server 2008:
DECLARE @START_DATE DATETIME
SET @START_DATE = GETDATE()
SELECT * FROM MY_TABLE
WHERE TRANSACTION_DATE_TIME > DATEADD(MINUTE, -1440, @START_DATE)
В запросе выбора, который вы видите выше, оптимизирует ли SqlServer запрос, чтобы не вычислять результат DATEADD снова и снова. Или я несу ответственность за сохранение результата DATEADD во временной переменной?