Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problemas con fechas en php y mySQL

Estas en el tema de problemas con fechas en php y mySQL en el foro de PHP en Foros del Web. tengo unas dudas con respecto al manejo de unas fechas en una pagina donde se realiza una consulta en base a un campo que se ...
  #1 (permalink)  
Antiguo 02/09/2013, 13:26
 
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta problemas con fechas en php y mySQL

tengo unas dudas con respecto al manejo de unas fechas en una pagina donde se realiza una consulta en base a un campo que se llama semana, este campo es del tipo DATE y me guarda los datos de esta forma '2013-01-04', en esta tabla tengo registrados varios años 2010 - 2011- 2012 -2013 - y próximamente 2014 bien mis consulta es la siguiente, de hecho son dos.

la primera como hago para poner una vista de esta menera



pero en lugar de los meses me despliegue años por ejemplo 2010 - 2011 - 2012 y al darle clic me regrese la consulta con los años en cuestion.

esa seria la primer consulta.

la segunda. dado el campo semana me guarda la fecha completa necesito sacar el numero de semana correspondiente de cada fecha, un año contiene 52 semanas

esto lo hago con la siguiente instruccion

Código PHP:
$temp[] = array('v' => (string) date("W"strtotime($r['semana']))); 
y aquí si pongo por ejemplo que $r['semana'], contiene 2013- 09 -02 este me devuelve 36, hasta aqui todo bien, el problema viene con la consulta general que es de la siguiente forma.

Código:
$result = $mysqli->query('SELECT * FROM servicios WHERE YEAR(servicios.semana)= YEAR(NOW()) AND id_granja ='.$id )or die(mysql_error());

esta consulta la utilizo solo para devolver los datos del año actual el problema es que la semana 1 del año no me la muestra ya que esta tiene la fecha '2012-12-31'
recordando que las semanas empiezan en lunes por tanto este dato lo omite, como puedo lograr que esta me sea inlcuida dentro del 2013?

desde ya muchas gracias,
  #2 (permalink)  
Antiguo 03/09/2013, 12:22
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: problemas con fechas en php y mySQL

porqué no lo haces a la inversa? primero obtén los del año... luego obtienes las semanas del año... no sé si me explico...
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #3 (permalink)  
Antiguo 03/09/2013, 14:07
 
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: problemas con fechas en php y mySQL

Cita:
Iniciado por p414 Ver Mensaje
porqué no lo haces a la inversa? primero obtén los del año... luego obtienes las semanas del año... no sé si me explico...


de hecho estoy teniendo problemas con eso, no se si me explico tengo eventos que van desde 2010 hasta 2013 pero en el campo semana esta guardada la fecha completa es decir 2010-09-11, 2011-04-22 así sucesivamente, como genero una consulta para que me de unicamente los años que hay diferentes en ese campo hay una sentencia que es DISTINCT(semana), pero me trae todas las fechas completas no unicamente el año.
  #4 (permalink)  
Antiguo 03/09/2013, 14:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problemas con fechas en php y mySQL

Este es un tema un tanto complicado, porque el valor de "semana" inicial del año es distinto en función de la cantidad de días que haya del presente año en esa semana.
De hecho, MySQL tiene una función específica para determinar su valor: WEEK(), que puede serte útil.
Mira en el manual de referencia de MYSQL.
Dependiendo de si se toma como base que la semana comience el Domingo o el Lunes, la función puede devolver diferentes resultados:
Cita:
EEK(date[,mode])

Esta función retorna el número de semana para date. La forma de dos argumentos de WEEK() le permite especificar si la semana comienza en lunes o domingo y si el valor de retorno debe estar en el rango de 0 a 53 o de 1 a 53. Si el argumento mode se omite en MySQL 5.0, el valor de la variable de sistema default_week_format se usa. Consulte Sección 5.3.3, “Variables de sistema del servidor”.

La siguiente tabla describe cómo funciona el argumento mode :
Primer día
Modo de semana Rango Semana 1 es la primera semana...
0 Domingo 0-53 con un domingo en este año
1 Lunes 0-53 con más de 3 días este año
2 Domingo 1-53 con un domingo este año
3 Lunes 1-53 con más de 3 días este año
4 Domingo 0-53 con más de 3 días este año
5 Lunes 0-53 con un lunes en este año
6 Domingo 1-53 con más de 3 días este año
7 Lunes 1-53 con un lunes en este año
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     WEEK('2013-01-01') Semana1,
  3.     ->     WEEK('2013-01-01',0)Semana2,
  4.     ->     WEEK('2013-01-01',1) Semana3,
  5.     ->     WEEK('2013-01-01',2) Semana4,
  6.     ->     WEEK('2013-01-01',3) Semana5,
  7.     ->     WEEK('2013-01-01',4) Semana6,
  8.     ->     WEEK('2013-01-01',5) Semana7,
  9.     ->     WEEK('2013-01-01',6) Semana8,
  10.     ->     WEEK('2013-01-01',7) Semana9;
  11. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  12. | Semana1 | Semana2 | Semana3 | Semana4 | Semana5 | Semana6 | Semana7 | Semana8 | Semana9 |
  13. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  14. |       0 |       0 |       1 |      53 |       1 |       1 |       0 |       1 |      53 |
  15. +---------+---------+---------+---------+---------+---------+---------+---------+---------+
  16. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/09/2013 a las 17:41
  #5 (permalink)  
Antiguo 04/09/2013, 08:44
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: problemas con fechas en php y mySQL

Hola, si entendi bien esto resolvera tus problemas, teniendo en cuanta el resultado de dicha tabla te da valores como

2013-09-05,2013-09-06,2012-09-07,2012-09-07,2011-09-08,2012-09-04,2013-09-04,2013-09-07,2013-09-07,2013-09-08,2011-09-08,2011-09-08,2012-09-08,2012-09-08

en mysql hay una funcion para fechas(YEAR) que retorna el año de esa fecha en especifico, lo hay para dia, mes tambien

SELECT YEAR(fecha) as anio FROM fechas group by anio


Comenta si te funcion.

Exitos

Etiquetas: mysql+consulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.