如何在SQL Server 2008中使用months_between函数?

时间:2014-01-30 20:13:52

标签: sql-server sql-server-2008

我有一张表EMP,我需要他们HIREDATE到现在的日期差异。

我使用了MONTHS_BETWEEN函数,我编写了这个SQL语句:

SELECT 
    HIREDATE, SYSDATE, MONTHS_BETWEEN (SYSDATE, HIREDATE) AS DIFF 
FROM 
    EMP

输出

  HIREDATE     SYSDATE     DIFF
  ---------   --------- ----------
    17-DEC-80 31-JAN-14 397.452866
    20-FEB-81 31-JAN-14 395.356092
    22-FEB-81 31-JAN-14 395.291576
    02-APR-81 31-JAN-14 393.936737

但我在SQL Server 2008中需要相同的输出,我尝试使用DATEDIFF这样的函数:

  Declare @Date1 datetime 
  Declare @Date2 datetime 
  set @Date1 = (SELECT GETDATE());
  set @Date2 = (SELECT HIREDATE FROM SCOTT.EMP )

  SELECT 
      DATEDIFF(MONTH, @Date1, @Date2) AS DifferenceOfDay

但是我收到了错误消息:

  

Msg 512,Level 16,State 1,Line 6
  子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

请帮我在SQL Server 2008中编写一个查询,以获得相同的输出...

2 个答案:

答案 0 :(得分:0)

要修复原始查询,请尝试以下操作。

SELECT HIREDATE
  , SYSDATE
  , DATEDIFF(MONTH, [HIREDATE], GETDATE()) AS DifferenceOfDay 
FROM SCOTT.EMP

您的原始错误是因为以下变量赋值将返回多于1个值。

set @Date2 = (SELECT HIREDATE FROM SCOTT.EMP )

答案 1 :(得分:0)

如果您想使用类似的查询,请使用此功能。

SELECT DATEDIFF(M, HIREDATE, GETDATE()) FROM SCOTT.EMP

以下是DATEDIFF文档的链接。