0

datetime 스탬프로 사용되는 몇 개의 열이있는 테이블이 있습니다. 테이블은 다음 컬럼 UpDate 열 계산 열 ExpDate의 시간 + 24시간 업데이트 될 매일 업데이트되는 수입계산 된 열 또는 저장 프로 시저 사용

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

를 포함한다. 현재 날짜 시간이 ExpDate 이상이고 ExpDate보다 작고 을 나타내려면 Active 열이 표시되고 싶고 ExpDate보다 크거나 같을 때는 'N'이 표시되도록하십시오.

필자는 스토어드 프로 시저를 사용하여 이것을 확인하고 필요에 따라 업데이트하기 위해 무기한 실행한다고 생각했지만, 그렇게하는 것이 의미가 없으며 다른 사람에게이 작업을 수행하는 방법에 대한 다른 제안이 있는지 알고 싶습니다. 예를 들어 IF 문 쿼리를 기반으로 계산 된 열로도 사용할 수있는 경우입니다.

답변

2

ExpDateActive의 계산을 지속해야하는 좋은 이유가 없다면 테이블에 대한 쿼리에서 계산을 수행해야한다고 생각합니다. 이 같은

뭔가 : 당신의 응답을

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 
) 
+0

감사 :

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은 다음과 같이 보일 것이다 열 원하는 경우

. 내가 정확히 이해한다면, 당신은 내가 ExpDate에 아직 도달하지 않은 곳에 원하는 레코드를 쿼리 할 때 Active = Y를 설정하고 다른 모든 레코드는 N으로 설정할 것을 의미합니까? – vbNewbie

+0

쿼리를 실행할 때 ExpDate와 Active를 모두 계산한다는 의미입니다. 현재 실행중인 쿼리에 대해 클라이언트에 값을 반환하기 위해 어디에도 저장하지 않거나 아무 것도 업데이트하지 않습니다. –

+0

괜찮 았어, 고마워. – vbNewbie