¿Cómo puedo seleccionar entradas para un día de la semana determinado utilizando SQL?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Podría usar esta consulta para seleccionar todos los pedidos con una fecha el lunes:

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

Pero por lo que sé, esto no puede acelerarse usando un índice, ya que para cada fila strftime se debe calcular.

Podría agregar un campo adicional con el día de la semana almacenado, pero quiero evitarlo. ¿Existe alguna solución que haga uso de un índice o me equivoco y esta consulta realmente funciona bien? (Eso significa que no tiene que pasar por cada fila para calcular el resultado).

¿Fue útil?

Solución

Si desea todos los lunes, necesitará un campo o escaneo secuencial. Lo que podría hacer es calcular las fechas reales, por ejemplo, para todos los lunes dentro de un año. La condición WHERE date IN ('2009-03-02', '2009-02-23', ...) usaría el índice

Otros consejos

O como alternativa a la sugerencia de vartec, construya una tabla de calendario que conste solo de una fecha y un nombre de día para cada día del año (ambos indexados) y luego realice su consulta haciendo una ÚNETE en esta tabla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top