Hola, tengo una tabla con un campo de fecha y alguna otra información. Quiero seleccionar todas las entradas de la semana pasada (la semana comienza desde el domingo).
valores de la tabla:
id date
2 2011-05-14 09:17:25
5 2011-05-16 09:17:25
6 2011-05-17 09:17:25
8 2011-05-20 09:17:25
15 2011-05-22 09:17:25
Quiero seleccionar todos los identificadores de la semana pasada, la salida esperada es 5, 6, 8. (el id 2 no está en la semana pasada y el id 15 está en la semana actual).
Cómo escribir y consulta SQL para el mismo.
SELECT id FROM tbl WHERE WEEK(date, 0) = WEEK(NOW(), 0) - 1
durante semanas, pero supongo que su objetivo no son las semanas reales. Al menos no mencionó cosas como ISO-8601, o si quiere que se tome en consideración el cambio de año.WHERE table.column >= DATE(NOW()) - INTERVAL 7 DAY
Respuestas:
fuente
fuente
id 15
...Utilizo la función YEARWEEK específicamente para volver a la semana anterior completa (a diferencia de 7 días antes de hoy). YEARWEEK también permite un segundo argumento que establecerá el inicio de la semana o determinará cómo se maneja la primera / última semana del año. YEARWEEK le permite mantener el número de semanas para retroceder / avanzar en una sola variable, y no incluirá el mismo número de semanas de años anteriores / futuros, y es mucho más corto que la mayoría de las otras respuestas aquí.
fuente
WHERE YEARWEEK(dateColumnFromTbl, 1) = YEARWEEK(CURDATE() - INTERVAL 1 WEEK, 1)
Forma simplificada:
Datos de la semana pasada:
Datos de hace 2 semanas:
Violín SQL
http://sqlfiddle.com/#!8/6fa6e/2
fuente
Puede hacer su cálculo en php y luego agregarlo a su consulta:
ahora esto dará la fecha de hace una semana
fuente
Probablemente la forma más sencilla sería:
Durante 8 días (es decir, de lunes a lunes)
fuente
POR FAVOR, gente ... 'La semana pasada' como pidió el OP y donde estaba buscando (pero no encontré ninguna respuesta satisfactoria) es LA ÚLTIMA SEMANA.
Si hoy es martes, la ÚLTIMA SEMANA es el lunes HACE UNA SEMANA al domingo HACE UNA SEMANA .
Entonces:
O por semanas ISO:
fuente
Deberá calcular qué día en relación con hoy es domingo en su middleware (php, python, etc.) *
Luego,
fuente
Puede estar en una sola línea:
fuente
Una forma sencilla puede ser esta, este es un ejemplo real de mi código y funciona perfectamente:
fuente
La consulta anterior no funcionará. Después de la
where
cláusula, si no podemosCAST
el valor de la columna, entonces no funcionará. Debierascast
el valor de la columna.p.ej:
fuente
fuente
A menudo también hago una verificación rápida de la "última semana" y lo siguiente tiende a funcionar bien para mí e incluye el día de hoy.
Si desea que esto NO incluya hoy, simplemente reste un día adicional del @EndDate. Si selecciono estas dos variables hoy, obtengo
Si quisiera de domingo a domingo, tendría lo siguiente.
fuente
fuente
También puedes usarlo de manera fácil
fuente
Use esto para la semana que comienza el DOMINGO:
fuente
Para más ejemplos Como el mes pasado, el año pasado, los últimos 15 días, los últimos 3 meses
Obtener el registro de la última semana
Usando la consulta de MySQL a continuación para obtener los registros de la última semana de la tabla de la base de datos mysql.
fuente
Aquí hay una forma de obtener registros de la última semana, mes y año en MySQL.
La semana pasada
El mes pasado
El año pasado
fuente
Si está buscando recuperar registros en los últimos 7 días, puede usar el fragmento a continuación:
fuente
Prueba esto:
fuente
Si ya conoce las fechas, simplemente puede usar between, así:
fuente