如何从sql中的temp #date表中选择以前的日期?

时间:2013-04-24 08:37:54

标签: sql sql-server tsql temp-tables

您有一个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

但是当年份改变时,我什么都没有得到答案

例如 如果@Todays_Date = '2012-01-31'它应该返回给我2012-12-31,但什么都不给。

帮我修改select statement

2 个答案:

答案 0 :(得分:2)

您可以使用以下查询来获取上一个日期

SELECT top 1 Date FROM #Date WHERE Date <@Todays_Date order by date desc

答案 1 :(得分:2)

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