我收到了与此类似的查询
select *
from stuff where stuff.id = 1
and start_Dt < = todays_date
and End_Dt > = todays_date
我问过那个给我的人为什么要进行日期比较,答案是“开始和结束日期是确保独特记录匹配所必需的”
我很困惑,这种比较不等于任何可能的日期吗?
答案 0 :(得分:3)
原因是,表格中的ID不是唯一的,即您可以拥有多个stuff.id = 1
的行。
但在任何给定时间只有一个是活跃的。使用日期比较检查:它返回当前有效的stuff.id = 1
行。这是开始日期过去的行(start_Dt <= todays_date
),结束日期是将来(End_Dt >= todays_date
)。
答案 1 :(得分:0)
举一个例子来说明daniel-hilgarth的答案,你可能有一张包含加班费率的表格。
这个特殊的例子显示了英国的标准增值税率。
id StartEffectiveDate EndEffectiveDate Rate
1 01/01/1900 00:00 30/11/2008 23:59 17.5
1 01/12/2008 00:00 31/12/2009 23:59 15.0
1 01/01/2010 00:00 03/01/2011 23:59 17.5
1 04/01/2011 00:00 01/01/2099 00:00 20.0
因此,对于今天的比率,这将返回此行
id StartEffectiveDate EndEffectiveDate Rate
1 04/01/2011 00:00 01/01/2099 00:00 20.0
此系统的优点是您可以预先实现此表。因此,在2009年12月,它将使用15.0增值税,但一旦您的计算机日期到达2010年1月1日,自动更改为17.5,然后在日期到2011年1月4日后再次更改。
您也可以用它来计划未来的价格上涨。