【发布时间】:2014-12-03 04:51:59
【问题描述】:
我在查找月份中的确切日期差异时遇到了问题。
我的要求是这样的
difference in months between two dates in 2015-01-25 00:00:00.000 and 2015-04-25 00:00:00.000 should be 3
difference in months between two dates 2015-01-25 00:00:00.000 and 2015-04-26 00:00:00.000 should be > 3
SELECT DATEDIFF(MONTH, '2015-01-25 00:00:00.000', '2015-04-28 00:00:00.000')
如果你使用 DATEDIFF 函数,那么上面两个例子都会返回相同的值 3。 即 SELECT DATEDIFF(MONTH, '2015-01-25 00:00:00.000', '2015-04-26 00:00: 00.000') 是 3。但我需要大于 3 的结果。
如何使用单个选择查询来实现上述要求。
【问题讨论】:
-
做
DATEDIFF(MONTH, '2015-01-25 00:00:00.000', '2015-04-26 00:00:00.000')时的期望值是多少?你想要3.xx吗? -
是的..我需要这样的输出
-
@ekad ..即使返回值为 4 我也没问题
-
由于月份长度可变,当您尝试以月份为单位进行计算时,您总是会得到一些不直观的结果(对您而言,无论您目前正在做什么)。特别考虑月末的日期,您可能会得到两个相隔 30 天的日期的两次比较,根据所涉及的月份,您可能会得到“1 个月,1 天”,“2 个月正好”这样的结果”和“2个月零1天”。
-
我知道这是旧的,但我把它放在那里,因为我会很高兴自己看到这个。我有一个类似但略有不同的问题,年数(2017 年与 2020 年)上升为 3 - 尽管 2017 年的月份更晚。因此,2017 年 12 月与 2020 年 3 月相差 3 年,如果您计算年数,我认为这在技术上是正确的(但实际上我们通常试图计算已经过去了多少时间,而 3 年实际上并没有过去...... )(续)
标签: sql .net sql-server database