Pregunta MySQL Query para seleccionar datos de la semana pasada?


Hola, tengo una tabla con un campo de fecha y otra información. Quiero seleccionar todas las entradas de la semana pasada (la semana comienza desde el domingo).

valores de 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 ID de la semana pasada, el resultado esperado es 5, 6, 8. (ID 2 no está en la semana pasada, y el ID 15 está en la semana actual.)

Cómo escribir y SQL Query para el mismo.


75
2018-05-22 18:42


origen


Respuestas:


SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY

101
2018-05-22 19:01



select id from tbname
where date between date_sub(now(),INTERVAL 1 WEEK) and now();

112
2017-08-22 18:46



Forma simplificada:

Datos de la semana pasada: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 1 AND YEAR( date) = YEAR( current_date );

Hace 2 semanas datos: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 2 AND YEAR( date) = YEAR( current_date );

SQL Fiddle

http://sqlfiddle.com/#!8/6fa6e/2


12
2017-10-25 06:54



Puede hacer su cálculo en php y luego agregarlo a su consulta:

$date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago

$sql = "SELECT * FROM table WHERE date <='$date' ";

ahora esto dará la fecha de hace una semana


8
2018-05-22 18:52



SELECT id FROM table1
WHERE YEARWEEK(date) = YEARWEEK(NOW() - INTERVAL 1 WEEK)

Utilizo la función YEARWEEK específicamente para volver a la anterior semana completa del calendario (en comparación con los 7 días anteriores al día de hoy). YEARWEEK también permite un segundo argumento que establecerá el comienzo de la semana o determinará cómo se maneja la primera / última semana del año. AÑO le permite mantener el número de semanas para ir / volver en una sola variable, y no incluirá el mismo número de semana de años anteriores / futuros, y es mucho más corto que la mayoría de las otras respuestas aquí.


8
2017-08-26 08:06



Necesitará calcular qué día relativo a hoy es domingo en su middleware (php, python, etc.) *

Entonces,

select id
from table
where date >= "$sunday-date" + interval 7 DAY
  • puede ser una forma de obtener la fecha del domingo relativa a hoy en MySQL también; esa sería sin dudas la solución más limpia si no es demasiado costoso de realizar

3
2018-05-22 18:49



Probablemente la manera más simple sería:

SELECT id
FROM table
WHERE date >= current_date - 7

Durante 8 días (es decir, de lunes a lunes)


3
2017-07-27 20:58



Puede ser en una sola línea:

SELECT * FROM table WHERE Date BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()

2
2017-09-08 07:23