【问题标题】:Compare Two Dates with Two Other Dates in SqlServer 2008在 Sql Server 2008 中将两个日期与其他两个日期进行比较
【发布时间】:2013-07-24 11:52:03
【问题描述】:

我在 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,我不会得到想要的结果。 任何机构都可以帮助我。

谢谢

【问题讨论】:

  • 您希望返回哪些行?
  • 第一行。因为这个 toDate 在日期之间
  • 也许像this 这样的东西对你有用。

标签: asp.net sql-server database stored-procedures


【解决方案1】:

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

   (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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多