我有两列,即 enddate 和 startdate 我需要找到所有这些记录
(结束日期-开始日期)>2 年
我尝试使用timediff(enddate,startdate)>2
但它返回一个错误说:'timediff'不是一个公认的内置函数名
我正在使用 sql server management studio,有什么帮助吗?
我的日期格式是2007-04-16 00:00:00.000
我有两列,即 enddate 和 startdate 我需要找到所有这些记录
(结束日期-开始日期)>2 年
我尝试使用timediff(enddate,startdate)>2
但它返回一个错误说:'timediff'不是一个公认的内置函数名
我正在使用 sql server management studio,有什么帮助吗?
我的日期格式是2007-04-16 00:00:00.000
尝试使用DateDiff
DateDiff(year,enddate,startdate)
WHERE dateadd(year, -2, enddate) > startdate
我会用DATEDIFF
. 它应该让你在宏观层面上达到目标。
DECLARE @orderTracker TABLE (
orderDate DATE,
orderShipped DATE,
orderNum VARCHAR(6)
);
INSERT INTO @orderTracker
( orderDate, orderShipped, orderNum )
VALUES ('01/01/2012', '06/12/2013', '55YY7'),
('05/20/2006', '09/10/2008', 'sdlhf8'),
('06/02/2011', '10/12/2012', '34JJU'),
('11/25/2009', '06/12/2013', '553iSS'),
('06/15/2008', '12/12/2011', '5F09U7'),
('02/06/2013', '08/12/2013', '55YY7');
SELECT * FROM @orderTracker;
SELECT *
FROM @orderTracker
WHERE DATEDIFF(YEAR, orderDate, orderShipped) >= 2;
根据评论中的讨论,您最好的选择是使用 start datetime 和 dateAdd 函数建立阈值日期。这将为您提供结束时间在日期时间之后、同一日历日期(月、月中的某天)、开始日期两年后的所有记录。
Where endDate > dateadd(year, 2, startDate)
请在 DateDiff 中使用“年份”
DATEDIFF(year, startdate, enddate) > 2
欲了解更多信息,请查看以下链接。
这应该返回年数:
DATEDIFF(year,'2008-06-05','2008-08-05')
在我写这篇文章的时候, DATEDIFF在这种情况下不能正常工作。实际上,它根本无法正常工作,没有人应该使用它。
例子是;
DATEDIFF(YEAR, '2016-08-28', '2017-04-28')
返回 1,尽管还没有一年。它只是减去年数,不考虑月数或天数。
正如其他人所建议的那样,改用 DATEADD 方法。