Ver Mensaje Individual
  #11  
Antiguo 28-01-2013
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Pero es que eso se soluciona muy fácil con la propiedad DisplayFormat tal como te lo han recomendado antes. Se ve que no has prestado atención al hilo.

En como interprete internamente las fechas firebird déjalos a los componentes, que bien saben hacer su trabajo. Ese esfuerzo inútil en hacer una consulta para "armar" la fecha como gustas se puede ahorrar.
Tu error está en concebir que las fechas se ingresan a tu forma. No... cada motor tiene la propia y si no la respetas allí tu.
Es por eso que los componentes ya disponen de las funcionalidades para solventar todo esto. Por ejemplo, quieres pasar una fecha pues basta con un:

Código Delphi [-]
MiDataSet.FieldByName('CampoFechaHora').asDateTime := MiFechaHora;

Siendo MiFechaHora una variable del tipo TDateTime, o si quieres algo directo le puedes pasar desde un TDtateTimePicker por ejemplo:

Código Delphi [-]
MiDataSet.FieldByName('CampoFechaHora').asDateTime := MiDTP.DateTime;

Ahora no interesa el formato de presentación que tengas... si es mm/dd/yyyy o yyyy/aa/mm o el que fuese. Los componentes se encargan del trabajo sucio y traducen este formato al interno que espera la base de datos.

A la inversa, al momento de presentar o leer los datos hay varias posibilidades de como encararlo. Puedes aprovechar el evento OnGetText o más fácil aún la propiedad DisplayFormat.

También esto aplica a los parámetros. En tu consulta se ve en el where un Between. ¡Pasa los datos como parámetros!

Código SQL [-]
BETWEEN :Fecha1 AND :Fecha2

Luego en tus parámetros les asignas los valores. Los parámetros harán el trabajo sucio y al final traduciran al formato adecuado que interprete Firebird.

Y si dicha evaluación con las fechas será fija, aprende y comprende que debes ceñirte al formato interno (que en el caso de Firebird es: dd.mm.yyyy hh:mm:ss.nnnn) en lo más posible ya que no obligas al motor que interprete, o mejor dicho intente, reconocer si lo escrito cumple con alguno de los formatos (véase la tabla 10-2) que es capaz de aceptar ya que con eso pierdes tiempo.

Esa consulta tarde o temprano será lentísima.
Ha decir verdad no se comprende ni hay una razón fundada que te impida seguir las recomendaciones que te han dado. No me queda otra explicación más que tu ignorancia sobre el tema y el desconocimiento, y asombro de tu parte, al notar el porqué firebird guarda "una fecha extraña" y en una cerradez de que "debe almacenar siempre como y lo que ingreso". No sabía que los campos de un motor de base de datos deban ser WYSIWYG. ¿O acaso tienes alguna explicación al respecto?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita