2012-05-30 3 views
0

시나리오 :어제 로그 테이블에서 레코드 가져 오기

타임 스탬프 필드가있는 상당한 양의 레코드 (2 백만)가있는 로그 테이블입니다. ID를 기본 키로 제외한 인덱스가없고 인덱스 (또는 다른 영구 객체) 생성에 문제가 없습니다.

어제의 모든 레코드를 선택하고 싶습니다.

나는 그것을하는 약간 방법이다는 것을 나는 알고있다, 나는 다만 "제일"방법에 의견을 원하고, 제일 의미한다 가장 빠르다.

지금 오전 11시이며, 만약 내가 같은 것을 할 수 있기 때문에 여기에 트릭, 타임 스탬프의 "시간"입니다 : 11에서 어제부터

where modifiedDate between dateadd(dd,-1,getdate()) and getdate() 

아프 기록을 오늘

에서 데이터를 얻을 것이다

그것의 SQL 2005 그래서 "날짜"데이터 형식을 없다

답변

5
SELECT * 
FROM myTable 
WHERE modifiedDate >= dateadd(day,datediff(day,0,GETDATE()),-1) 
    AND modifiedDate < dateadd(day,datediff(day,0,GETDATE()),0) 

SQL Fiddle 위스콘신 th 데모

+0

대단히 고마워! – Diego

+0

나를 위해 매력처럼 일했습니다! – BustedSanta

1
SELECT * 
FROM mytable 
WHERE modifiedDate >= DATEADD(dd, -1, CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
     AND modifiedDate < CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
+0

고맙습니다 Quassnoi! +1 귀하의 접근 방식이 효과적입니다! – Diego

관련 문제