У меня есть академический сценарий, который я хотел бы знать, как анализировать.
DECLARE @date DATETIME
SET @date = getDate()
SET @date = DATEADD(DAY, DATEDIFF(DAY, 0, @date-3), 3)
Это округлит дату до четверга.
То, что мне было предложено, так это доказательство того, где существуют неявные CAST.
Есть три места, где я предполагаю, что это должно происходить...
DATEADD(
DAY,
DATEDIFF(
DAY,
0, -- Implicitly CAST to a DATETIME?
@date-3 -- I presume the `3` is being implicitly cast to a DATETIME?
),
3 -- Another implicit CAST to a DATETIME?
)
Однако, возможно, поскольку 0
и 3
являются константами, это делается во время компиляции в план выполнения?
Но если бы 3
были переменными типа INT, было бы иначе?
Есть ли способ проанализировать план выполнения или какой-либо другой метод, чтобы иметь возможность определить это импирически?
Чтобы усложнить ситуацию, я сейчас не на сайте. Я пытаюсь удаленно помочь коллеге с этим. Это означает, что у меня нет прямого доступа к SSMS и т. д.