我正在尝试检查优惠券在两个给定日期之间是否有效。
我没有太多的 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
我正在尝试检查优惠券在两个给定日期之间是否有效。
我没有太多的 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
不要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'
如果是这样的话.. 将 +1 添加到 endDate 就可以了..