我正在使用SQL Server,只是在我的案例中找出一个问题。 我使用DATEDIFF函数:
select datediff(dd,'1935-12-07','2010-03-02')/365.00 ---> 74.28
select datediff(dd,'1935-12-07','2010-03-02')/365 ---> 74
select datediff(yy,'1935-12-07','2010-03-02') ---> 75
如果你能观察到如果我用'dd'尝试DATEDIFF那么我得到的差异是74 / 74.28。 但是,如果我将它与'yy'一起使用,我会得到差异为75。
为什么会这样?意味着为什么差异为75,因为它差不多接近74.
在不同情况下我需要这两种功能。但由于行为不同,我面临很多问题。
建议我解决这个问题。
感谢。
答案 0 :(得分:1)
第一种情况=您隐式转换为浮点数,显示正确的结果
第二种情况=你是在逼迫地转换为一个int,它作为转换的一部分向下舍入(Floor值)
第三种情况=你根本没有投出任何东西,DATEDIFF()
返回一个有符号的int,它向上舍入(天花板值)
解决方案:做任何你想做的事,但要在整个代码中保持一致。
答案 1 :(得分:1)
datediff
函数会检查您指定的日期部分的差异,因此说两个日期的年份部分的差异为75是正确的。
或者像微软公司的人那样说出来,它会计算该日期部分的边界数量。在您的示例中,两个日期之间有75年的边界。
查看this msdn页面,它解释了它应该如何工作。