使用DATEDIFF获取特定月份之间的确切天数()未给出预期结果

时间:2015-02-25 02:33:27

标签: sql-server datediff

以下是样本数据:

NewReportDate | Age      | OldReportDate
-----------------------------------------
2014-04-28    |31.558767 | 2014-03-28
2014-04-28    |13-438767 | 2014-03-28
2014-04-28    |13.198767 | 2014-03-28

以下是我的疑问:

SELECT 
Q.Type
,Q.Oper
,Q.SNo
,Q.Hours
,CONVERT(Date, Q.ReportDate + '28', 112) AS 'Report_Date'
, a.*
, (DATEDIFF(dy, CONVERT(Date, Q.ReportDate + '28', 112),A.ReportDate )/365) + A.age AS 'AdjustedAge'
FROM QReport Q
INNER JOIN AReport a
ON q.name = a.name 
WHERE a.ReportDate = '2014-03-28 00:00:00.000'
ORDER BY A.ReportDate desc

以下是我的结果:

NewReportDate | Age      | OldReportDate | AdjustedAge|
-------------------------------------------------------
2014-04-28    |31.558767 | 2014-03-28    |31.558767 
2014-04-28    |13.438767 | 2014-03-28    |13.438767
2014-04-28    |13.198767 | 2014-03-28    |13.198767 

AdjustedAgeNewReportDate之间存在月份差异时,为什么我的OldReportDate没有变化?

小数应该有差异。

1 个答案:

答案 0 :(得分:2)

2014-04-28至2014-03-28之间有31天。

31/365使用整数除法= 0

0 + x = x

因此这两个值是相同的。考虑用365.26除以。