Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Manejo de fechas en MySql

Estas en el tema de Manejo de fechas en MySql en el foro de Mysql en Foros del Web. Hola amigos como hago para restar fechas y saber cuantos dias se han pasado de determinada fecha tengo 2 atributos q es los q estoy ...
  #1 (permalink)  
Antiguo 09/02/2011, 13:54
 
Fecha de Ingreso: enero-2011
Ubicación: Bucaramanga
Mensajes: 60
Antigüedad: 13 años, 3 meses
Puntos: 1
Pregunta Manejo de fechas en MySql

Hola amigos como hago para restar fechas y saber cuantos dias se han pasado de determinada fecha

tengo 2 atributos q es los q estoy restando.

Fecha_requerido y fecha_cierre (los campos son datetime)

Tengo esta consulta pero nada

SELECT (fecha_requerido)-(fecha_cierre) AS total_dias_trancurridos FROM `Mi_tabla`
WHERE fecha_requerdio>=fecha_cierre

pero el resultado de esa consulta son estos valores q no entiendo


70828694.000000
69834447.000000

Me han dicho que use la funcion datediff pero no se como usarla para esta consulta, necestito solo sacar la diferencia en dias no importan los minutos

Una manita por favor,

gracias desde ya

Solo necesito saber cuantos dias pasan entre fecha_requerido y fecha_cierre
  #2 (permalink)  
Antiguo 09/02/2011, 13:57
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, smolina

Muevo tu tema al foro de Mysql desde Web general.

Saludos,
  #3 (permalink)  
Antiguo 09/02/2011, 14:12
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, 5 meses
Puntos: 2658
Respuesta: Manejo de fechas en MySql

En MySQL tienes al menos dos funciones posibles: DATEDIFF() y TIMESTAMPDIFF(). Cualquiera de las dos te dará el valor buscado, sólo que la primera opera sobre tipos DATE y la segunda sobre DATETIME (ver: MySQL 5.0 Reference Manual :: 12 Funciones y operadores :: 12.5 Funciones de fecha y hora).
Los valores que estás obteniendo parecen ser tipos de fecha UNIXTIME:
Código MySQL:
Ver original
  1. mysql> SELECT FROM_UNIXTIME(70828694) FECHA1, FROM_UNIXTIME(69834447) FECHA2;
  2. +---------------------+---------------------+
  3. | FECHA1              | FECHA2              |
  4. +---------------------+---------------------+
  5. | 1972-03-30 15:38:14 | 1972-03-19 03:27:27 |
  6. +---------------------+---------------------+
  7. 1 row in set (0.00 sec)
Pero puede que me equivoque, y esos valores surjan de una conversión incorrecta. Habría que ver qué tipo de dato tiene definido esa columna de la tabla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 09/02/2011, 14:30
 
Fecha de Ingreso: enero-2011
Ubicación: Bucaramanga
Mensajes: 60
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Manejo de fechas en MySql

Los valores de los atributos de las fechas son de tipo datatime

Lo que pasa es que maneja horas,minutos y segundos, pero en mi caso no me interesan, lo que verdaderamente interesa es esl total de dias que han pasado entre la fecha_de_requerido y la fecha de cierre.
sino que al hacer esta consulta
SELECT (fecha_requerido)-(fecha_cierre) AS total_dias_trancurridos FROM `Mi_tabla`

no me esta dando el valor esperado. no c como manejar la funcion indicada, si tienen algun ejemplo se los agradeceria mucho.
  #5 (permalink)  
Antiguo 09/02/2011, 17:59
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, 5 meses
Puntos: 2658
Respuesta: Manejo de fechas en MySql

Los ejemplos los puedes ver en el link que te pasé:
DATEDIFF():
Cita:
DATEDIFF(expr,expr2)

DATEDIFF() retorna el número de días entre la fecha inicial expr y la fecha final expr2. expr y expr2 son expresiones de fecha o de fecha y hora. Sólo las partes de fecha de los valores se usan en los cálculos.

Código MySQL:
Ver original
  1. mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
  2.         -> 1
  3. mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
  4.         -> -31
TIMESTAMPDIFF():
Cita:
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

Retorna la diferencia entera entre las expresiones de fecha o de fecha/hora datetime_expr1 y datetime_expr2. La unidad del resultado se da en el argumento interval. Los valores legales para interval son los mismos que los listados en la descripción de la función TIMESTAMPADD() .

Código MySQL:
Ver original
  1. mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
  2.         -> 3
  3. mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
  4.         -> -1

TIMESTAMPDIFF() está disponible desde MySQL 5.0.0.
En tu caso los ejemplos se pueden tomar directamente copiando los del manual:

Caso DATEDIFF
Código MySQL:
Ver original
  1. SELECT DATEDIFF(fecha_requerido, fecha_cierre) total_dias_trancurridos
  2. FROM Mi_tabla;
Caso TIMESTAMPDIFF
Código MySQL:
Ver original
  1. SELECT TIMESTAMPDIFF(DAY, fecha_cierre, fecha_requerido) total_dias_trancurridos
  2. FROM Mi_tabla;
Usa el que quieras.

PD: ¿Leíste el link que te pasé?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/02/2011, 10:45
 
Fecha de Ingreso: enero-2011
Ubicación: Bucaramanga
Mensajes: 60
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Manejo de fechas en MySql

Gracias mi hermano ya me sirvio todo.

saludos desde colombia
  #7 (permalink)  
Antiguo 03/03/2011, 17:11
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Manejo de fechas en MySql

Tienes que usar la instruccion

Código:
select DATE_ADD(NOW(),INTERVAL 20 DAY); # Agrega 20 días a la fecha actual 
select DATE_ADD(NOW(),INTERVAL 30 MINUTE); # Agrega 30 minutos a la fecha actual 
select DATE_ADD(NOW(),INTERVAL 50 YEAR); #Agrega 50 años a la fecha actual 
select DATE_ADD(NOW(),INTERVAL '10-5' YEAR_MONTH); #Agrega 10 años 5 meses a la fecha actual
Para mayor informacion
[URL="http://www.webmstr.com.mx/aportes/59.html"]http://www.webmstr.com.mx/aportes/59.html[/URL]

Etiquetas: php, programacion, software, softwarelibre, bases-de-datos
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 07:54.