2

こんにちはtemp #Dates table、次の条件を使用して入力されたものがあります。

IF @Period = 'Monthly'
    BEGIN
        INSERT #Dates
        SELECT MAX(DATE) WeekDays FROM TABLENAV  WITH (NOLOCK, READUNCOMMITTED) 
        GROUP BY DATEDIFF(MONTH, 0, DATE)
        ORDER BY MAX(DATE) DESC
    END

現在、データは #Dates 一時テーブルにあります

DATE
2013-04-22 00:00:00.000
2013-03-29 00:00:00.000
2013-02-28 00:00:00.000
2013-01-31 00:00:00.000
2012-12-31 00:00:00.000
2012-11-30 00:00:00.000

Previous_Date私は何かを渡しているときに取得したいTodays_Date

私は次のように試しました

DECLARE @Todays_Date datetime = '2013-04-22'
    select date from #Dates where MONTH(DATE) = MONTH(@Todays_Date)-1  AND YEAR(DATE) = YEAR(@Todays_Date)

giving ans : 2013-03-29

しかし、 Year が変わると、 ans として何も得られません

たとえば、@Todays_Date = '2012-01-31'私を返す必要があります2012-12-31が、何も与えない場合。

私の を変更するのを手伝ってくださいselect statement

4

2 に答える 2

2

以下のクエリを使用して、前の日付を取得できます。

SELECT top 1 Date FROM #Date WHERE Date <@Todays_Date order by date desc
于 2013-04-24T08:41:57.230 に答える
2
select max([Date]) FROM #Date WHERE [Date] <@Todays_Date
于 2013-04-24T08:46:23.540 に答える