0

enddate と startdate という 2 つの列があり、すべてのレコードを検索する必要があります。

(終了日-開始日)>2 年

使ってみたtimediff(enddate,startdate)>2

しかし、「timediff」は認識された組み込み関数名ではありませんというエラーが返されます

SQL Server Management Studio を使用していますが、何か助けはありますか?

私の日付形式は2007-04-16 00:00:00.000

4

8 に答える 8

6

使ってみてDateDiff

DateDiff(year,enddate,startdate)
于 2013-07-30T12:48:26.420 に答える
6
WHERE dateadd(year, -2, enddate) > startdate
于 2013-07-30T12:50:54.633 に答える
3

私は使用します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;
于 2013-07-30T13:01:40.103 に答える
2

コメントでの議論から、あなたの最善の策は、start datetime および dateAdd 関数を使用してしきい値の日付を設定することです。これにより、開始日から 2 年後の同じ暦日 (月、日) で、終了時刻が同じ時刻の datetime より後のすべてのレコードが得られます。

Where endDate > dateadd(year, 2, startDate)
于 2013-07-30T13:11:42.920 に答える
1

DateDiff では「年」を使用してください

 DATEDIFF(year, startdate, enddate) > 2

詳細については、以下のリンクを確認してください。

http://msdn.microsoft.com/en-us/library/ms189794.aspx

于 2013-07-30T12:52:08.067 に答える
0

これは年数を返すはずです:

DATEDIFF(year,'2008-06-05','2008-08-05')
于 2013-07-30T12:52:48.800 に答える