将日期范围转换为间隔描述
最近的项目中的一项要求是报告何时将完全消耗资源。除了用尽日历日期外,还要求我用英语形式显示剩余时间,例如“要走1年3个月”。 内置DATEDIFF功能 返回在指定开始日期和结束日期之间跨越的指定日期部分边界的计数...。 如果按原样使用,可能会产生误导性或令人困惑的结果。例如,使用YEAR间隔将显示1999-12-31(YYYY-MM-DD)和2000-01-01相隔一年,而常识会说这些日期仅相隔1天。相反,使用1999年12月31日和2010年12月31日之间的时间间隔为4018天,而大多数人会以“ 11年”作为更好的描述。 从天数开始,然后从中计算月份和年份,将容易出现and年和月份大小错误。 我想知道如何在各种SQL方言中实现它?输出示例包括: create table TestData( FromDate date not null, ToDate date not null, ExpectedResult varchar(100) not null); -- exact formatting is unimportant insert TestData (FromDate, ToDate, ExpectedResult) values ('1999-12-31', '1999-12-31', '0 days'), ('1999-12-31', '2000-01-01', '1 day'), ('2000-01-01', '2000-02-01', '1 month'), ('2000-02-01', '2000-03-01', '1 month'), -- …