以下是样本数据:
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
当AdjustedAge
和NewReportDate
之间存在月份差异时,为什么我的OldReportDate
没有变化?
小数应该有差异。
答案 0 :(得分:2)
2014-04-28至2014-03-28之间有31天。
31/365使用整数除法= 0
0 + x = x
因此这两个值是相同的。考虑用365.26除以。