Sql server 2008 使用日期计算SQL Server中的列

Sql server 2008 使用日期计算SQL Server中的列,sql-server-2008,date,Sql Server 2008,Date,我有一个计算列,当其他两列更新时,该列会更新,该列的公式为 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:

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

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
    即可获得绝对值(不带+或-):

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

  • 那么有两个选择:

  • 只需确保之前的日期始终是
    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
    即可获得绝对值(不带+或-):

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