选择下个月的前两个事件

时间:2013-11-01 06:26:19

标签: sql-server-2008

我正在尝试从当前月份的日期中获取最近的两个事件并将其显示在我的主页上。但是,如果当前月份的事件不存在,我会收到一般错误。 如果找不到当前月份的事件,如何修改查询以检查下个月?

dt = g1.return_dt("select  top  2  image_url,event_name,substring(description,1,80) as  description,Convert(nvarchar,Table_name.open_date,106) as open_date  from  Table_name where MONTH(open_date)=MONTH(getDate()) and YEAR(open_date)=YEAR(getDate()) order  by ID  desc");

1 个答案:

答案 0 :(得分:0)

只需用大或相等的条件替换WHERE语句:

MONTH(open_date)>=MONTH(getDate()) and YEAR(open_date)>=YEAR(getDate())

在这种情况下,如果当前没有当前月份的记录,那么您将从下个月获得TOP 2记录。

更新:或者,如果当前月份只存在一条记录,您只需输出它。

where ( MONTH(open_date)=MONTH(getDate()) 
        and YEAR(open_date)=YEAR(getDate())
      )
      OR 
      (
        NOT EXISTS(select * from Table_name 
                    where MONTH(open_date)=MONTH(getDate()) 
                          and YEAR(open_date)=YEAR(getDate()) 
                   ) 
        AND 
        (MONTH(open_date)>=MONTH(getDate()) and YEAR(open_date)>=YEAR(getDate()))
      )