2016-08-31 2 views
0

케이스 문을 작성하여
인 경우 현재 시간이 오전 11시 이전 인 경우 어제뿐만 아니라 오늘도 정보를 원합니다.
시간이 오전 11시 이후라면 오늘부터의 정보 만 원합니다. 여기 Where 문을 현재 시간 기준으로

내가 정확하게 문제를 이해한다면 나는 다음 당신이 원하는 것입니다, 지금 (작업 추가 요구 사항)

FROM [EDC].[dbo].[DIM_DefectData] with (NoLock) 
Where 
Case 
    When datepart(hh, GetDate()) < 11 then 
     [InitiateDt] > DATEADD(day, DATEDIFF(day, 0, GETDATE()),-1) 
    Else 
     [InitiateDt] > DATEADD(day, DATEDIFF(day, 0, GETDATE()),0) 
End 

그리고 ....

답변

0

이 작업은 다음과 같습니다

FROM [EDC].[dbo].[DIM_DefectData] WITH (NOLOCK) 
WHERE [InitiateDt] > ( 
    CASE 
    WHEN DATEPART(HH, GETDATE()) < 11 
    THEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1) 
    ELSE DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) 
    END) 

[InitiateDt]WHERE 절 옆에 두었습니다.

0

select * from yourTable 
     where [InitiateDt] > Case When datepart(hh,getdate()) <11 
          Then dateadd(day,datediff(day,0,getdate()),-1) 
          Else dateadd(day,datediff(day,0,getdate()),0) 
          END 
+0

고마워요! 작동하는 것처럼 보입니다. 내일 완전히 열심히 공부하게되어 기쁩니다. – Peter

0

이 시도하려고 :뿐만 아니라

DECLARE @t table(d datetime) 

insert @t values 
('2016-08-30 09:00'), 
('2016-08-30 10:00'), 
('2016-08-31 10:00'), 
('2016-08-30 11:00'), 
('2016-08-30 11:08') 

if(DATEPART(HH, GETDATE()) < 11) 
SELECT CAST(d AS TIME) FROM @t 
WHERE CAST(d AS TIME) <= CAST('11:00' AS TIME) 
ELSE 
SELECT CAST(d AS TIME) FROM @t 
WHERE CAST(d AS TIME) > CAST('11:00' AS TIME) 

위의 반환 모든 오늘날의 데이터를 어제 오전 11시 전에.