Página 1 de 1

Manejo de fechas en Querys para SQLite

Publicado: Jue Oct 06, 2011 1:32 am
por MarioDavalos
Hola a todos,
Tengo un rato buscando la manera de hacer una query en SQLite con manejo de
fechas.
La query es la siguiente:
select TipoDocumento, origen, OriSerie, OriConsec, orifecha, orihora,
Status_Documento, profecha, prohora, uuid, cliente_nombre AS Nombre,
cliente_rfc AS RFC,"MPX" as Moneda, (CASE WHEN status_documento =
"CANCELADO" and tipodocumento IN("FAC","NCG","RHO","RAR") THEN
(select -1*importe from controlfacturas b where b.OriSerie = a.OriSerie and
b.OriConsec = a.OriConsec and b.Importe != 0 and b.origen=a.origen) WHEN
status_documento = "CANCELADO" and tipodocumento = "NCD" THEN (select
importe from controlfacturas b where b.OriSerie = a.OriSerie and b.OriConsec
= a.OriConsec and b.Importe != 0 and b.origen=a.origen) WHEN tipodocumento
IN("FAC","NCG","RHO","RAR") THEN importe WHEN tipodocumento = "NCD" THEN
importe*-1 END) from controlfacturas a where
julianday("20"||dtoc(profecha)) >= julianday("2011-09-01") and
julianday("20"||dtoc(profecha)) < julianday("2011-10-06") and status = 'P'
Lo curioso del caso es que si esta query la corro directamente en el
ejecutor de consultas en SQLite Editor la resuelve bien, pero si esta misma
instrucción la ejecuto desde código (ya sea usando TSQLQuery o directamente
con el método QuerryArray() de TADODataSource) no resuelve bien la consulta,
después de varios monitoreós detecto que el detalle esta en la clausula
where, en concreto en las condiciones de fechas:
where julianday("20"||dtoc(profecha)) >= julianday("2011-09-01") and
julianday("20"||dtoc(profecha)) < julianday("2011-10-06") and status = 'P'
Me pueden apoyar indicándome cual serí­a la forma correcta de manejar
fechas...
Agradezco de antemano la valiosa información que me puedan aportar.
Saludos,
Mario Dávalos
P.D. julianday("20"||dtoc(profecha)), que raro se ve esto, pero fue la única
forma que me resolvió correctamente en SQLite Editor.

Manejo de fechas en Querys para SQLite

Publicado: Jue Oct 06, 2011 11:32 am
por jfgimenez
Mario,
> where julianday("20"||dtoc(profecha)) >= julianday("2011-09-01") and
> julianday("20"||dtoc(profecha)) < julianday("2011-10-06") and status
> = 'P'
where profecha >= "2011-09-01" and profecha < "2011-10-06" and status = 'P'
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Manejo de fechas en Querys para SQLite

Publicado: Jue Oct 06, 2011 11:33 am
por jfgimenez
Mario,
perdona, me he equivocado. Hay que cambiar las comillas dobles por simples:
> where profecha >= "2011-09-01" and profecha < "2011-10-06" and status
> = 'P'
where profecha >= '2011-09-01' and profecha < '2011-10-06' and
status = 'P'
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Manejo de fechas en Querys para SQLite

Publicado: Jue Oct 06, 2011 7:15 pm
por MarioDavalos
Gracias José, creo que me empecé a confundir con el formato de la fecha y el
uso de comillas simples y dobles...
Pero que bueno que sea mas simple la solución.
Saludos,
"Jose F. Gimenez" escribió en el mensaje de
noticias:4e8d75f1$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Mario,
perdona, me he equivocado. Hay que cambiar las comillas dobles por simples:
> where profecha >= "2011-09-01" and profecha < "2011-10-06" and status =
> 'P'
where profecha >= '2011-09-01' and profecha < '2011-10-06' and
status = 'P'
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info