これに似た質問がありました
select *
from stuff where stuff.id = 1
and start_Dt < = todays_date
and End_Dt > = todays_date
日付を比較した理由を提供者に尋ねたところ、「開始日と終了日は一意のレコードの一致を確保するために必要です」とのことでした。
私は混乱しています。その比較は可能な日付と同等ではないでしょうか?
これに似た質問がありました
select *
from stuff where stuff.id = 1
and start_Dt < = todays_date
and End_Dt > = todays_date
日付を比較した理由を提供者に尋ねたところ、「開始日と終了日は一意のレコードの一致を確保するために必要です」とのことでした。
私は混乱しています。その比較は可能な日付と同等ではないでしょうか?
その理由は、テーブル内のIDが一意ではないためです。つまり、。を使用して複数の行を含めることができますstuff.id = 1
。
ただし、常にアクティブなのは1つだけです。これは、日付比較でチェックされますstuff.id = 1
。現在有効な行を返します。これは、開始日が過去(start_Dt <= todays_date
)で終了日が未来(End_Dt >= todays_date
)である行です。
ダニエル・ヒルガースの答えを説明する例を挙げると、時間の経過とともに変化する率を含む表があるとします。
この特定の例は、英国の標準 VAT 率を示しています。
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 Vat が使用されますが、コンピュータの日付が 2010 年 1 月 1 日になると自動的に 17.5 に変更され、日付が 2011 年 1 月 4 日になると再び変更されます。
また、将来の値上げ計画にも使用できます。