【发布时间】:2012-08-06 09:08:00
【问题描述】:
有没有一种简单的方法来计算两个日期之间的差异:
- 表示为年数,包括。年份分数;和
- 考虑闰年?
例如,2011 年 3 月 1 日和 2012 年 3 月 1 日之间的差值为 1 年。但是,如果我使用 DATEDIFF(day,..,..) 并除以 365,由于闰年,我会得到 1.00274 的(不受欢迎的)答案。
需要明确的是,我还需要任何年份的分数(即,不仅仅是年数)。例如,2011 年 3 月 1 日和 2012 年 3 月 3 日之间的差异是 1.005479(1 年 + 2/365 年)。 2011 年 3 月 1 日和 2012 年 2 月 29 日之间的差异是 0.997268(0 年 + 365/366 年)
因此,总而言之,上述两个示例的输出(以 DECIMAL(7,6) 为单位)将是:
1.000000 1.005479 0.997268
【问题讨论】:
-
你能告诉我你想要在上面的例子中输出什么吗?
-
但是“年分数”应该如何定义(据我所知,这不是一个众所周知的术语)?根据具体日期,您可能需要将一年计算为 366 天而不是 365 天。例如2011 年 3 月 1 日和 2012 年 2 月 29 日之间的差异的预期输出是多少?
-
您能否给出 29/02/2012 和 28/02/2013 之间的差异的预期输出,以及 29/02/2012 和 01/03/2013 之间的差异?
-
我在您发布的同时编辑了我的帖子。我希望年份分数中的分母是来年的天数。哪一个,现在我想起来,有点回答我的问题(除了有一个内置的 T-SQL 函数可以做到这一点)。
标签: sql sql-server-2008 tsql