2013-04-24 61 views
2

您好有一個temp #Dates table它是通過使用以下條件填充。如何從sql的temp #date表中選擇以前的日期?

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

但是,當新年的變化,我越來越沒有什麼作爲ANS

例如 如果@Todays_Date = '2012-01-31'它應該返回我2012-12-31但是給什麼。

幫我修改我的select statement

回答

2
select max([Date]) FROM #Date WHERE [Date] <@Todays_Date 
+1

感謝很多簡單的解決方法我沒有得到它,因爲程序複雜:) – Neo 2013-04-24 08:54:20

2

您可以使用下面的查詢來獲取一個日期,

SELECT top 1 Date FROM #Date WHERE Date <@Todays_Date order by date desc 
相關問題