Cómo obtener la semana actual a partir del día actual

Iniciado por cpichi.cu, 7 Julio 2011, 17:16 PM

0 Miembros y 1 Visitante están viendo este tema.

cpichi.cu

Quizás el nombre del post no sea muy preciso, así que lo mejor será que me expliqué mejor.

Lo que necesito es lo siguiente: tengo una BD en MySql y necesito hacer unas búsquedas por fechas, para lo cual tengo un combo donde tengo estas opciones:

Today
Yesterday
This Week
This Month
Last 7 days
Last 30 days
Last calendar month
Date Range

Para Today y Yesterday y los 7 y 30 días antes tengo la solución, utilizo:

TO_DAYS(NOW()) - TO_DAYS(o.date) = 0
TO_DAYS(NOW()) - TO_DAYS(o.date) = 1
TO_DAYS(NOW()) - TO_DAYS(o.date) <= 7
TO_DAYS(NOW()) - TO_DAYS(o.date) <= 30

respectivamente...
Pero mi problema comienza con los días de la semana actual, que no sé cómo lograr que a partir de la fehca actual NOW() pueda obtener los 7 días de la semana correspondiente...

Lo tengo medio logrado con una combinación bastante complicada de MySql, pero necesitaría PHP, quiero saber si existe alguna función en MySql implementada para tal efecto, o si lo tengo que combinar obligatoriamente. Me serviría también algo de ayuda para Las Calendar Month, el rango de fecha lo tengo hecho también, sería algo cómo esto:

RegDate >= '2008-10-10' AND RegDate <= '2008-12-11'

Gracias por la ayuda.
"La teoría es cuando se sabe todo y nada funciona.
La práctica es cuando todo funciona y nadie sabe por qué.
En este caso hemos combinado la teoría y la práctica: nada funciona... y nadie sabe por qué." (Albert Einstein)

cpichi.cu

Bueno, gracias por leer, ya he resuelto el problema, SAN Google, me ayudó,  :-\

Aquí dejo la solución por si acaso alguien se topa con el problemilla.

SELECT
*
FROM orders  as o
WHERE YEARweek(o.date) = YEARweek(CURRENT_date)

Ese SELECT devuelve todas las "orders" que estén con fecha de la semana corriente.

Y este otro es para la semana anterior

SELECT
*
FROM orders as o
WHERE YEARweek(o.date) = YEARweek(CURRENT_date - INTERVAL 7 DAY)

******Y para el LAST MONTH****

SELECT 
*
FROM orders as o
WHERE
SUBSTRING(o.date FROM 1 FOR 7) =  SUBSTRING(CURRENT_date - INTERVAL 1 MONTH FROM 1 FOR 7)


Saludos, espero haber ayudado a alguien.
"La teoría es cuando se sabe todo y nada funciona.
La práctica es cuando todo funciona y nadie sabe por qué.
En este caso hemos combinado la teoría y la práctica: nada funciona... y nadie sabe por qué." (Albert Einstein)

Nakp

jajaja lo conseguiste en menos de 9 minutos :xD me alegra que publicaras la solución a tu problema :) muchos se olvidan de que preguntaron y no ayudan a los demás cuando tienen la misma dificultad, todo por guardarse la solución... gracias ;)
Ojo por ojo, y el mundo acabará ciego.

cpichi.cu

Siempre que puedo ayudo, como mismo tuve la duda yo, la puede tener otro, no importa que sea algo simple, siempre habrá alguien queriendo apreder y necesitará que lo guíen, a veces he encontrado soluciones en post de más de 4 años de antigüedad.

Aquí dejo la solocuión para cómo sería seleccionar las "orders" del mes en curso.

SELECT
*
FROM orders  as o
WHERE MONTH(o.date) = MONTH(CURRENT_DATE)
"La teoría es cuando se sabe todo y nada funciona.
La práctica es cuando todo funciona y nadie sabe por qué.
En este caso hemos combinado la teoría y la práctica: nada funciona... y nadie sabe por qué." (Albert Einstein)

cchianalino

Hola se que hace mucho que este hilo no tiene actividad pero... siempre alguien ayuda
si necesitara realizar una consulta en un rango que va de jueves a jueves a partir de una fecha.
tengo campo fecha y necesito haces
WHERE fecha BETWEEN (jueves pasado) AND (jueves proximo)
desde ya gracias !!!!