我是SQL的完整菜鸟并尝试理解为什么此查询返回“115”:
select datediff(yy, -3, getdate())
答案 0 :(得分:4)
datediff
需要三个参数。第一个是interval
,第二个是start date
,第三个是end date
。你传递-3作为开始日期,我们可以在那里显示:
SELECT CAST(-3 AS datetime) -- results in '1899-12-29 00:00:00.000'
因为2014 - 1899年是115,所以你会得到这个结果。
答案 1 :(得分:1)
因为DATEDIFF()计算了2个日期之间的间隔,并且您在其中一个日期中指定了年-3。
首先,日期"零"是SQL Server上的12/30/1899。 其次,你的" -3"是一个不正确的日期格式,因此将其替换为0
2014 - 1899 = 115
使用DATEADD()来实现您想要的目标。
答案 2 :(得分:0)
DateDiff根据您在第一个参数中给出的内容给出年/日/月等的差异。第二个和第三个参数是日期时间值,用于计算差异,即(param2 datetime value - param3 datetime value)。
现在在你的情况下,param2是" -3" 在ms ms sql中运行此查询并观察输出:
select CAST(-3 as datetime)
select GETDATE()
select datediff(yy, -3, getdate())