SQL을 사용하여 주어진 평일의 항목을 선택하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/602245

  •  03-07-2019
  •  | 
  •  

문제

이 쿼리를 사용하여 월요일에 날짜와 함께 모든 주문을 선택할 수 있습니다.

SELECT * from orders WHERE strftime("%w", date)="1";

그러나 내가 아는 한, 이것은 모든 행과 마찬가지로 인덱스를 사용하여 속도를 높일 수 없습니다. strftime 계산해야합니다.

저장된 주간에 추가 필드를 추가 할 수는 있지만 피하고 싶습니다. 색인을 사용하는 솔루션이 있습니까? 아니면 내가 틀렸고이 쿼리가 실제로 잘 작동합니까? (결과를 계산하기 위해 모든 행을 통과 할 필요는 없습니다.)

도움이 되었습니까?

해결책

네가 원한다면 모두 월요일에는 현장이나 순차적 스캔이 필요합니다. 당신이 할 수있는 일은 예를 들어 1 년 이내에 월요일에 실제 날짜를 계산하는 것입니다. 조건 WHERE date IN ('2009-03-02', '2009-02-23', ...) 인덱스를 사용합니다

다른 팁

또는 Vartec의 제안에 대한 대안으로, 연중 매일 날짜와 일일 이름으로 만 구성된 달력 테이블을 구성한 다음이 테이블에 대해 가입하여 쿼리를 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top