计算SQL中两个日期的差异

时间:2016-03-22 19:20:47

标签: sql date compare

我有一个包含2个日期/时间列的表(CreatedDateTime / LastModifiedDateTime):

Item   CreatedDateTime            LastModifiedDateTime

1      2016-03-18 18:49:36.557    2016-03-22 18:51:10.950

2      2016-03-22 17:32:57.610    2016-03-22 17:37:26.790

我想:

  1. 计算 CreatedDateTime 与今天的日期之间的差异(给我'年龄')
  2. 计算 LastModifiedDateTime 与今天的日期之间的差异(让我了解适应性)
  3. 如上所述,我希望能够在一段时间内报告尚未“修改”的(LastModifiedDateTime)。

    有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:2)

如果您使用的是SQL SERVER:

示例数据:

CREATE TABLE #Temp(Item                 INT
              , CreatedDateTime      DATETIME
              , LastModifiedDateTime DATETIME);

INSERT INTO #Temp
VALUES
      (1
     , '2016-03-18 18:49:36.557'
     , '2016-03-22 18:51:10.950'),
      (2
     , '2016-03-22 17:32:57.610'
     , '2016-03-22 17:37:26.790');

QUERY:

SELECT A.Item
    , A.CreatedDateTime
    , A.LastModifiedDateTime
    , Age = DATEDIFF(day,A.CreatedDateTime,GETDATE())
    , inactivity = DATEDIFF(day,A.LastModifiedDateTime,GETDATE())
FROM   #Temp AS A;

结果:

enter image description here

答案 1 :(得分:0)

你可以使用年龄的DATEDIFF()函数和当前日期的GETDATE()函数。

您只需输入DATEDIFF(day,CreatedDateTime,GETDATE())或类似查询。

Datediff()还允许您采取月,小时或其他时间措施。

同样使用#2,你可以抛出一些情况,当LastModifiedDateTime为空时......然后给你自己一个不同的报告。

答案 2 :(得分:0)

DATEDIFF()函数返回两个日期之间的时间。

语法 DATEDIFF(datepart,startdate,enddate);

SELECT DATEDIFF(day,'2014-06-05','2014-08-05') AS DiffDate

结果

  

DiffDate

     

61

交换日期会导致结果为负。