计算表格和现在值之间的时差

时间:2012-08-13 14:45:13

标签: sql-server sql-server-2008 tsql

我正在为我的商家数据做一份报告,以了解他们开展业务以来的年数或月数。所以在我的表中我有一个BusinessStartDate,但我想知道自从他们开始他们的业务以来的年份或月份:

BusinessStartdate           No of years or Months

2003-02-01 00:00:00.000     9

我正在使用SQL Server 2008。

2 个答案:

答案 0 :(得分:2)

SELECT BusinessStartDate,
  DATEDIFF(MONTH, BusinessStartDate, CURRENT_TIMESTAMP)
  FROM dbo.table_name;

答案 1 :(得分:2)

case
    when datediff(mm, BusinessStartDate, current_timestamp) > 12
    then datediff(yy, BusinessStartDate, current_timestamp)
    else datediff(mm, BusinessStartDate, current_timestamp)
end

请注意我对有关计算方法的答案的评论。这个版本与我们通常认为的周年纪念日不符。下面的表达式更接近正常,因此您可以将其用于比较。还有很多其他答案可以解决生日和年龄问题。

case
    when datediff(mm, BusinessStartDate, current_timestamp) > 12
    then datediff(dd, BusinessStartDate, current_timestamp) / 365
    else datediff(dd, BusinessStartDate, current_timestamp) / 30
end