【发布时间】:2012-08-16 14:50:32
【问题描述】:
我有一个学术场景,我想知道如何分析。
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 等。
【问题讨论】:
-
。 .我会诚实的。我还没有找到方法。我希望有人提供一个很好的答案。我花了很多很多时间分析产生类型转换错误(通常从字符串到日期或数字)的复杂查询。
标签: sql sql-server-2005 implicit-conversion sql-execution-plan