0

TermTermStartDateTermEndDateを含むこのテーブルがあります。今日の日付を考慮してから、どの用語が該当するか (現在の用語) を確認し、現在の用語 (Calculated_Date) の TermEndDate から正確に 360 日後の日付を考慮する必要があります。

その日付を取得したら、その日付の後にどの用語が該当するかを確認する必要があります。基本的に、Calculated_Date の後に該当する TermStartdate は何ですか。

ノート:

基本的には、今学期から今学期のちょうど1年前までの学生の全記録が必要です。たとえば、この用語が Fall 2013 の場合、Spring 2013 のレコードが必要になります。Fall 2012 は考慮しないでください。

編集:

サンプルテーブル

  Term           TermStartDate    TermEndDate
 Fall 2012          2012/08/27     2012/12/15
 Spring 2013        2013/01/14     2013/04/26
 Sumr I 2013        2013/05/06     2013/06/29
 Sumr II 2013       2013/07/01     2013/08/24
 Fall 2013          2013/08/26     2013/12/14 
 Spring 2014        2014/01/13     2014/04/26      

ステップ 1: GetDate()

ステップ 2: GetDate() の直後にある TermEndDate を確認します (現在の用語を示します)

ステップ 3: 現在の学期終了日のちょうど 360 日前の日付を計算する

ステップ 4: ステップ 3 で計算された日付の後に該当する最初の用語

4

3 に答える 3

1

このようなものはあなたが求めているものだと思いますが、実際には完全にはわかりません. あなたの質問に従うのは非常に難しいです。

SELECT *
FROM myStudents
WHERE theDate BETWEEN DATEADD(yy,-1,currentTerm) AND currentTerm
于 2013-09-04T17:20:36.253 に答える
1

あなたは問題を複雑にしすぎていると思いますが、あなたが要求したように、これを試してください:

DECLARE @terms TABLE(term varchar(50),termStartDate date, termEndDate date)
INSERT INTO @terms VALUES('Fall 2012','8/27/2012','12/15/2012')
INSERT INTO @terms VALUES('Spring 2013','1/14/2013','4/26/2013')
INSERT INTO @terms VALUES('Sumr I 2013','5/6/2013','6/29/2013')
INSERT INTO @terms VALUES('Sumr II 2013','7/1/2013','8/24/2013')
INSERT INTO @terms VALUES('Fall 2013','8/26/2013','12/14/2013')
INSERT INTO @terms VALUES('Spring 2014','1/13/2014','4/26/2014')

DECLARE @today date =GETDATE()
SELECT @today = termEndDate 
    FROM @terms 
    WHERE termStartDate<=@today AND termEndDate>=@today
SELECT term 
    FROM @terms 
    WHERE termStartDate>=DATEADD(d,-360,@today) AND termStartDate<=GETDATE()

これにより、現在の期間が終了する 360 日前の期間に含まれるすべての期間が一覧表示されます。

アップデート

SELECT min(termStartDate)startDate FROM (
    SELECT termStartDate 
        FROM @terms 
        GROUP BY termStartDate 
        HAVING termStartDate>=DATEADD(d,-360,@today) 
               AND termStartDate<=GETDATE()
)z

最も早いタームの startDate を取得します。

于 2013-09-04T17:49:02.333 に答える