2009-02-10 13 views
5

Tengo un campo de fecha y hora en una tabla de Sybase, y necesito usarlo en Perl para hacer algunos cálculos (diferencias para asegurarme de que estoy recogiendo los registros que están al menos 'n' mins separados). Ahora, si simplemente selecciono <datetime field>, Sybase devuelve un campo legible para los humanos que no me sirve. Estaba buscando una manera de convertir esto en, por ejemplo, un tiempo basado en la época, lo que me permitirá manipularlos fácilmente en Perl.¿Cómo puedo manipular una cadena de fecha y hora de Sybase en Perl?

Podría estar equivocado pero no encontré una función existente para esto en Sybase. Lo más cercano que conseguí fue datediff, lo cual sirve para mi propósito. De hecho, lo estoy usando como una solución por ahora. El problema con datediff es debido a la limitación en el número entero, tiene un tope de 68 años. Sé que mi código probablemente no existirá hasta ese momento, pero ¿por qué introducir un límite basado en el tiempo por mi cuenta?

¿Hay alguna forma de evitar esto?

Gracias!

Respuesta

4

Si está de acuerdo con hacerlo en el cliente, el módulo Time :: ParseDate debería poder hacer el trabajo por usted.

2

Los módulos DateTime me han sido útiles cuando tengo que manejar los cálculos de fecha/hora.

Utilice el método DBD :: Sybase syb_date_fmt() para controlar el formato, luego use DateTime::Format::Strptime para analizar los resultados y generar objetos DateTime. Use el método DateTime epoch para obtener su tiempo de época, o mejor aún, haga sus cálculos utilizando los objetos DateTime :: Duration apropiados.

1

Si no puede conseguir que Sybase y Perl cooperen para darle un objeto DateTime genuino o algo similar (como Time :: Piece), entonces la forma en que generalmente manejo tales cosas es tratar de convencer a la base de datos para que brinde Me formato de fecha estándar ISO (AAAA-MM-DDTHH: MI: SS) y convertir desde allí.

Cuestiones relacionadas