• Publicidad

Manejo de tiempo con MySql y Perl

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Manejo de tiempo con MySql y Perl

Notapor caribesoft » 2007-04-11 10:51 @494

Hola Amigos Perlianos :

Necesito hacer un script Perl para poder filtrar los reportes de servicio que tengan una antigüedad de más de dos horas en el sistema y tengan un estatus "pendiente"

La tabla tiene un campo llamado "Indate" del tipo datetime que guarda la fecha y la hora en que se ingresó el reporte en el sistema y otro que se llama "estatus", que es un varchar.

Mi pregunta es: ¿se puede comparar esta fecha y hora con la fecha y hora actual del sistema y obtener la diferencia en horas?

Algo así
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth = $dbh->prepare("SELECT * FROM reportes WHERE estatus='Pendiente' and Indate <= $now ");
$sth->execute();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Saludos,

Caribesoft
caribesoft
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2006-05-09 22:01 @959
Ubicación: Cancun

Publicidad

Notapor kidd » 2007-04-11 11:14 @510

Hola:

Si quieres la diferencia en horas lo puedes hacer sencillamente con un query de MySQL:

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
SELECT TIMEDIFF(NOW(), Indate) AS diferencia FROM reportes WHERE estatus='Pendiente'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El resultado en diferencia sería en formate DATE TIME con la diferencia entre ambas fechas.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor caribesoft » 2007-04-13 13:03 @585

Gracias Kidd :

Fíjate que no me funcionó con TIMEDIFF, ya que estaba utilizando una versión antigua de Mysql, la 4.0, y tuve que resolverlo con la siguiente query:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth = $dbh->prepare("SELECT * FROM reportes WHERE estatus='Sin Asignar' and fecha_ingreso <=  DATE_SUB(now(), INTERVAL 2 HOUR);");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Muchas gracias por el TIP, y espero esto le sirva a alguien que busque algo parecido pero tenga una versión todavía más atrás de MySql. Creo que TIMEDIFF es válida a partir de la 4.2 o algo así.

Muchas gracias como siempre.

Caribesoft
caribesoft
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2006-05-09 22:01 @959
Ubicación: Cancun


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados