2

我正在尝试检查优惠券在两个给定日期之间是否有效。
我没有太多的 SQL 经验,但目前代码BETWEEN用于尝试验证,我遇到的问题是endDate前一天的午夜过期(例如10/12/2012 00:00:00.000计算到 的午夜10/11),我需要它通过的午夜10/12
所以我想知道添加/添加23:59:59到结束日期是否是执行此评估的最佳方式?

目前使用:

ca.CreateDate between co.StartDate and co.EndDate 
4

2 回答 2

5

不要BETWEEN用于连续变化的值。

你需要...

    ca.CreateDate >= co.StartDate
AND ca.CreateDate <  co.EndDate

但是您还需要在结束日期值中添加一天。无论是在代码co.EndDate + 1或类似代码)中,还是在它自己的数据中。

例如,如果您想要 2012 年第一周的所有时间...

WHERE
      theDateTime >= '01 Jan 2012'
  AND theDateTime <  '08 Jan 2012'

这甚至适用于其他粒度级别。

-- First 12 hours of the day
WHERE
      theDateTime >= '01 Jan 2012 00:00'
  AND theDateTime <  '01 Jan 2012 12:00'

-- All of Jan
WHERE
      theDateTime >= '01 Jan 2012'
  AND theDateTime <  '01 Feb 2012'
于 2012-10-11T14:12:24.850 回答
-1

如果是这样的话.. 将 +1 添加到 endDate 就可以了..

于 2012-10-11T14:13:45.353 回答