次のクエリは、うるう年を含まない一般的な集計であり、各月の日数が異なるため、月数は365/12日間で平均化されます。正確な日数を含む正確な数字が必要な場合は、アルゴリズムがより複雑になりますが、うまくいけば、これは合理的に近くの球場図になります。
SELECT CONVERT(VARCHAR(10), sum(datediff(year,work_from,work_to))-1) + 'Y' AS Years,
CONVERT(VARCHAR(10), FLOOR((sum(datediff(day, work_from,work_to)) - ((sum(datediff(year,work_from,work_to)) - 1) * 365))/30.4166)) + 'M' AS Months,
CONVERT(VARCHAR(10), CEILING(sum(datediff(day, work_from,work_to)) - ((sum(datediff(year,work_from,work_to)) - 1) * 365) - (FLOOR((sum(datediff(day, work_from,work_to)) - ((sum(datediff(year,work_from,work_to)) - 1) * 365))/30.4166) * 30.4166))) + 'D' AS Days,
CONVERT(VARCHAR(10), sum(datediff(day,work_from,work_to))) AS Total_Days
何かがここで少しオフに私には思えます。週末、休日、休暇はどうですか? –
[年月日を返すためにDATEDIFFを使用するにはどうすればいいですか?](https://stackoverflow.com/questions/1541570/how-to-use-datediff-to-return-year-month-and-day ) –
これは包括的ですか? 2行目のwork_toと3行目のwork_fromは1日離れているため、0日が欠落していますか? –