[C con Clase] Manejar Timestamp oracle

Josu Diaz de Arcaya josu.arcaya en gmail.com
Mie Sep 8 16:42:06 CEST 2010


gracias a los dos (tanto salvador como daniel)!

mi aproximación ha sido algo rudimentaria, 

std:string time = "2010-07-09T00:51:21.34253Z";

int year, month, dow, h, m, s;

sscanf(time.c_str(),"%d-%d%dT%d:%d:%dZ", &year, &month, &dow, &h, &m,
&s);
time_t tiempo = static_cast<time_t>((year-1900)*365*24*360 +
month*30*24*360 + dow*24*360 + h*360 + m*60 +s);

asi ya se puede operar con funciones como difftime etc... pero no me
gusta un pelo

sin duda vuestras propuestas son mejores, sobre todo la de dejar que
oracle haga el trabajo. Intentaré realizarlas que siempre es una mejor
solución que mi pequeña chapucilla.

gracias por todo!

On Wed, 2010-09-08 at 10:21 -0300, Daniel Campos wrote:

> pues lo mejor es que oracle mismo haga el cálculo, no sé de donde te
> está llegando ese string, pero si podés sacarle los milisegundos es
> muuuucho mas fácil.
> 
> si tenes algo asi : '2010-08-09 09:00:00.00000' trata de dejarlo asi :
> '2010-08-09 09:00:00'
> 
> entendiendo siempre q tu formato de fecha es YYYY-MM-DD HH24:MI:SS 
> 
> de los strings que te lleguen, una cosa asi podrias hacer :
> 
> sSQL = "select to_date('" + string1_timestamp.c_str() + "',
> 'syyyy-mm-dd hh24:mi:ss')  - to_date('" + string2_timestamp.c_str() +
> "', 'syyyy-mm-dd hh24:mi:ss') from dual";
> 
> y le mandas esta consulta a oracle.
> 
> todo eso te va a devolver otro valor, algo asi como .00208333, es el
> valor en días (habría que dividir 1 dia a minutos para tu caso) . 
> 
> espero te sirva.
> 
> saludos,
> 
> dani
> 
> El 8 de septiembre de 2010 05:05, Josu Diaz de Arcaya
> <josu.arcaya en gmail.com> escribió:
> 
>         Hola, 
>         
>         Llevo algun tiempo en la lista leyendo los problemas y
>         soluciones y aprendiendo bastante, aunque aun no he
>         participado. Paso a describir mi problema.
>         
>         Yo leo de una BBDD Oracle varios timestamp del tipo
>         '2010-08-09 09:00:00.00000' como un string.
>         
>         Mi problema es que quiero realizar operaciones sobre ellos,
>         del tipo minutos entre dos timestamp... Vamos que me vendria
>         de perlas pasar ese string a un time_t, pero no tengo ni idea
>         de cómo
>         
>         La idea es intentar evitar la conversión manualmente, ¿existe
>         alguna funcion que pueda realizar esto?
>         
>         Se que no he planteado ningun codigo pero creo que la duda es
>         bastante concreta.
>         
>         Un saludo y gracias!
>         
>         
>         _______________________________________________
>         Lista de correo Cconclase Cconclase en listas.conclase.net
>         http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>         Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> 
> 
> 
> 
> -- 
> Por favor, evite enviarme documentos adjuntos en formato Word o
> PowerPoint.
> Lea http://www.gnu.org/philosophy/no-word-attachments.es.html
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100908/1c60272e/attachment.html>


Más información sobre la lista de distribución Cconclase