0

datetimeスタンプとして使用されるいくつかの列を持つテーブルがあります。テーブルには次の列が含まれています

UpDate      datetime
SearchDate  datetime
ExpDate     dateadd(hour,24,UpDate)
Active      nvarchar(5)

毎日のUpDateインポートによって列が更新されると、計算列ExpDateは時間 + 24 時間で更新されます。現在の日時が よりも小さい場合と、現在の日時が よりも大きい場合を列Activeに示したいと思います。'Y'ExpDate'N'ExpDate

ストアドプロシージャを使用して無期限に実行し、これをチェックして必要に応じて更新することを考えましたが、それは意味がありません。これを行う方法について他に提案があるかどうか知りたいです。たとえば、IF ステートメント クエリに基づいて、それを計算列としても使用できるとします。

4

1 に答える 1

2

の計算を継続する正当な理由がない限り、テーブルに対するクエリで計算を行う必要があるExpDateActive思います。

このようなもの:

select [UpDate],
       SearchDate,
       dateadd(hour, 24, SearchDate) as ExpDate,
       case when getdate() >= dateadd(hour, 24, SearchDate)
         then 'N' 
         else 'Y' 
       end as Active
from YourTable

計算列が必要な場合、DDLは次のようになります。

create table YourTable
(
  [UpDate] datetime,
  SearchDate datetime,
  ExpDate as dateadd(hour, 24, SearchDate),
  Active as case when getdate() >= dateadd(hour, 24, SearchDate)
              then 'N' 
              else 'Y' 
            end
)
于 2013-01-02T16:48:01.533 に答える