我有一张表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中编写一个查询,以获得相同的输出...
答案 0 :(得分:0)
要修复原始查询,请尝试以下操作。
SELECT HIREDATE
, SYSDATE
, DATEDIFF(MONTH, [HIREDATE], GETDATE()) AS DifferenceOfDay
FROM SCOTT.EMP
您的原始错误是因为以下变量赋值将返回多于1个值。
set @Date2 = (SELECT HIREDATE FROM SCOTT.EMP )
答案 1 :(得分:0)