我有一个计算列,当其他两列更新时更新,该列的公式是
SELECT(datediff(day,'2012-11-01 18:15:00.000','2012-10-22 11:59:58.000'))
它适用于所有其他日期,但是当月份发生变化时,我会得到一个负值。如何确保不会发生这种情况并获得正确的整数值?
我有一个计算列,当其他两列更新时更新,该列的公式是
SELECT(datediff(day,'2012-11-01 18:15:00.000','2012-10-22 11:59:58.000'))
它适用于所有其他日期,但是当月份发生变化时,我会得到一个负值。如何确保不会发生这种情况并获得正确的整数值?
好吧,有两个选择:
只需确保较早的日期始终是您的日期列表中的第一个日期DATEDIFF
SELECT DATEDIFF(DAY, '2012-11-01 18:15:00.000', '2012-10-22 11:59:58.000')
这给你一个-10的结果- 这是因为你列表中的第一个日期是较晚的日期。
如果你使用
SELECT DATEDIFF(DAY, '2012-10-22 11:59:58.000', '2012-11-01 18:15:00.000')
你得到10的结果- 因为第一个日期DATEDIFF
是较早的日期。
仅用于ABS
获取绝对值(不带 + 或 -):
SELECT ABS(DATEDIFF(DAY, '2012-11-01 18:15:00.000', '2012-10-22 11:59:58.000'))
在这种情况下,您永远不会得到负值。