enddate と startdate という 2 つの列があり、すべてのレコードを検索する必要があります。
(終了日-開始日)>2 年
使ってみたtimediff(enddate,startdate)>2
しかし、「timediff」は認識された組み込み関数名ではありませんというエラーが返されます
SQL Server Management Studio を使用していますが、何か助けはありますか?
私の日付形式は2007-04-16 00:00:00.000
enddate と startdate という 2 つの列があり、すべてのレコードを検索する必要があります。
(終了日-開始日)>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 関数を使用してしきい値の日付を設定することです。これにより、開始日から 2 年後の同じ暦日 (月、日) で、終了時刻が同じ時刻の datetime より後のすべてのレコードが得られます。
Where endDate > dateadd(year, 2, startDate)
DateDiff では「年」を使用してください
DATEDIFF(year, startdate, enddate) > 2
詳細については、以下のリンクを確認してください。
これは年数を返すはずです:
DATEDIFF(year,'2008-06-05','2008-08-05')