0

これに似た質問がありました

select * 
from stuff where stuff.id = 1 
and start_Dt < = todays_date 
and End_Dt > = todays_date 

日付を比較した理由を提供者に尋ねたところ、「開始日と終了日は一意のレコードの一致を確保するために必要です」とのことでした。

私は混乱しています。その比較は可能な日付と同等ではないでしょうか?

4

2 に答える 2

3

その理由は、テーブル内のIDが一意ではないためです。つまり、。を使用して複数の行を含めることができますstuff.id = 1
ただし、常にアクティブなのは1つだけです。これは、日付比較でチェックされますstuff.id = 1。現在有効な行を返します。これは、開始日が過去(start_Dt <= todays_date)で終了日が未来(End_Dt >= todays_date)である行です。

于 2011-06-09T11:10:10.903 に答える
0

ダニエル・ヒルガースの答えを説明する例を挙げると、時間の経過とともに変化する率を含む表があるとします。

この特定の例は、英国の標準 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 日になると再び変更されます。

また、将来の値上げ計画にも使用できます。

于 2011-06-09T11:53:36.867 に答える