Como posso selecionar entradas para um determinado dia da semana usando SQL?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu poderia usar essa consulta para selecionar todas as encomendas com uma data em uma segunda-feira:

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

Mas, tanto quanto eu sei, isso não pode ser a velocidade usando um índice, como para cada strftime linha tem de ser calculado.

Eu poderia adicionar um campo adicional com o dia da semana armazenados, mas eu quero evitar isso. Existe uma solução que faz uso de um índice ou estou errado e esta consulta realmente funciona bem? (Isso significa que ele não tem que passar por cada linha para calcular o resultado.)

Foi útil?

Solução

Se você quiser todas Segunda-feira que nunca, você precisa de um campo ou varredura seqüencial. O que você poderia fazer, é datas reais calcular, por exemplo, para todas as segundas-feiras dentro de um ano. O WHERE date IN ('2009-03-02', '2009-02-23', ...) condição seria usar o índice

Outras dicas

Ou, como alternativa à sugestão de vartec, construir uma tabela de calendário, consistindo apenas em uma data e um nome de dia para cada dia do ano (ambos indexados) e, em seguida, realizar sua consulta, fazendo um JOIN contra esta tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top