1

我有一个计算列,当其他两列更新时更新,该列的公式是

SELECT(datediff(day,'2012-11-01 18:15:00.000','2012-10-22 11:59:58.000'))

它适用于所有其他日期,但是当月份发生变化时,我会得到一个负值。如何确保不会发生这种情况并获得正确的整数值?

4

1 回答 1

1

好吧,有两个选择:

  1. 只需确保较早的日期始终是您的日期列表中的第一个日期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是较早的日期。

  2. 仅用于ABS获取绝对值(不带 + 或 -):

    SELECT ABS(DATEDIFF(DAY, '2012-11-01 18:15:00.000', '2012-10-22 11:59:58.000'))
    

    在这种情况下,您永远不会得到负值。

于 2012-11-09T17:29:09.080 回答