1

我在 sql server 中有一个具有以下架构的表。

   **ID   Title     ActiveFromDate  ActiveToDate**
    1      Test       2013-07-06      2013-08-22
    2      Test       2013-07-01      2013-07-30

我想通过 ActiveFromDate 和 Active ToDate 选择记录,即选择所有在特定日期范围之间的记录。

     SELECT ISNULL(COUNT(*),0) AS Total, dbo.ArrangementPromotion.Title
FROM dbo.ArrangementPromotion
WHERE(
       (dbo.ArrangementPromotion.ActiveFromDate BETWEEN '2013-08-01' AND '2013-08-14') 
    OR (dbo.ArrangementPromotion.ActiveToDate BETWEEN '2013-08-01' AND '2013-08-14' )
     )
     AND dbo.ArrangementPromotion.Inactive = 0 
     AND dbo.ArrangementPromotion.Deleted = 0
     AND(12 IS NOT NULL OR dbo.ArrangementPromotion.ID <> 12 )
GROUP BY dbo.ArrangementPromotion.Title

但是如果参数@ActiveToDate 中的日期小于表Active ToDate,我不会得到想要的结果。任何机构都可以帮助我。

谢谢

4

1 回答 1

2

我想你可能正在寻找类似的东西

   (dbo.ArrangementPromotion.ActiveFromDate BETWEEN '2013-08-01' AND '2013-08-14') 
OR (dbo.ArrangementPromotion.ActiveToDate BETWEEN '2013-08-01' AND '2013-08-14' )
OR ('2013-08-01' BETWEEN dbo.ArrangementPromotion.ActiveFromDate AND dbo.ArrangementPromotion.ActiveToDate)
OR ('2013-08-14' BETWEEN dbo.ArrangementPromotion.ActiveFromDate AND dbo.ArrangementPromotion.ActiveToDate)

'2013-08-01'应该在哪里@ActiveFrom'2013-08-14' @ActiveTo

于 2013-07-24T12:05:33.180 回答