Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Problema con la fecha en Firebird

Buenas a todos después de mucho tiempo sin dar la lata.

Tengo el siguiente problema.

Intento hacer una consulta filtrando por una facha determinada donde uso un datatimer que me devuelve la fecha en el formato: dd/mm/yyyy y este valor lo paso como parámetro al select.
En el dataset de FBIPLus Trial tengo configurado el formato dd/mm/yyyy. Hasta ahí bien, pero el problema es que Firebird me está tomando la fecha de otro modo: mm/dd/yyyy y claro me dá error de conversión de fecha.
He probado a poner directamente en:

...... WHERE FECHAA='23/12/2002', y dá el mismo error.

Uso Dialect 3, FBIplus Trial, Firebird...

Por más que busco no veo donde puede estar el problema.

Si alguien tiene alguna información se agradece...

saludo...
Responder Con Cita
  #2  
Antiguo 15-07-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Checa Esto...

Pasale el siguiente formato de fecha DD.MM.AAA
Ejemplo:
Código SQL [-]
Select Fecha from tabla where fecha ='30.04.2006'
Responder Con Cita
  #3  
Antiguo 15-07-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Ya lo he hecho

Eso ya lo he hecho, pero es como si inviertiera mes y día.

ese 30.04.2006 lo considera como 04.30.2006.

Si uso MDO RC2 o los componentes de Interbase de Delphi ese problema no existe...

Es raro...
Responder Con Cita
  #4  
Antiguo 16-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
El lenguaje sql exige que el formato de la fecha sea m/d/Y de modo que es normal que se interpreten las fechas de esa forma (tambien valdria Y/m/d).

Lo raro es que digas que con los componentes de interbase de delphi no se da el problema, ya que es exactamente igual.

Lo que hay que hacer es o usar parametros en las querys, que es la forma correcta de trabajar con las bases de datos, de modo que la conversion al formato necesario las hagan los propios componentes, o formatear las fechas con el formato m/d/y antes de construir la sentencia sql.

Saludos
Responder Con Cita
  #5  
Antiguo 16-07-2006
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Cordial saludo,

Bueno, las fechas siempre han sido un problemilla, debido a que una cosa es la representacion interna en el motor, otra cosa es la forma en que se utilizan en SQL y otra es como se la presentamos al usuario.

Sobre la representacion interna, dejemosela a algun experto. Para la presentacion de datos al usuario, en mi caso (creo que es el de varios) utilizo el formato dd/mm/yyyy, pero en sentencias SQL se utiliza mm/dd/yyyy.

Para los que prorgramamos en Delphi y debemos construir SQL al vuelo, tendremos problema con variables de tipo TDateTime (son las que utilizo para mis variables en Delphi que tengan fechas).

Por eso diseñe una funcioncita que me convierta los TDateTime en una cadena con la fecha en el formato mm/dd/yyyy.

Código Delphi [-]
//*************************************************************************
//Funciones para manejo de fechas en general y fechas para Interbase en formato mm/dd/aaaa
//*************************************************************************

function _fecha_delimitada (fecha: TDateTime; caracter_delimitador: string) : string;
var
  anno, mes, dia: word;
begin
  DecodeDate(fecha,anno,mes,dia);
  if mes < 10 then
    if dia < 10 then
      result:=caracter_delimitador+'0'+InttoStr(mes)+'/'+'0'+InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
    else
      result:=caracter_delimitador+'0'+InttoStr(mes)+'/'+    InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
  else
    if dia < 10 then
      result:=caracter_delimitador+    InttoStr(mes)+'/'+'0'+InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
    else
      result:=caracter_delimitador+    InttoStr(mes)+'/'+    InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
end;

Espero les sea de utilidad.

Luis F. Buelvas T.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #6  
Antiguo 16-07-2006
joanajj joanajj is offline
Miembro
 
Registrado: jul 2003
Posts: 144
Poder: 21
joanajj Va por buen camino
Gracias por las respuestas

Gracias a todos, en cualquier caso mantengo lo que dije, usando los componentes de Interbase o los MDO(mercury) no sucede ningún problema y puedo visualizar y pasar como parámetro a la SQL la fecha en formato dd/mm/yyyy el problema me lo da con las FIBplus,que se los tengo que pasar mm/dd/yyyy .

Un saludo....
Responder Con Cita
  #7  
Antiguo 16-07-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por lbuelvas
Por eso diseñe una funcioncita que me convierta los TDateTime en una cadena con la fecha en el formato mm/dd/yyyy.
Y esta?
Código Delphi [-]
//***No tengo delphi a mano y lo hare de memoria.***

function FechaD (Fecha:TDateTime; Format:Integer=0): String;
begin
  Case Format of
   0: result:=FormatDate('dd/mm/yy', Fecha);
   1: result:=FormatDate('mm/dd/yy', Fecha);
   2: result:=FormatDate('yy/mm/dd', Fecha);
  End;
end;
Espero que funcione, pues no lo he probado.

Pero como he dicho en otros hilos, es mejor utilizar parametros para asignar cualquier fecha. Asi el componente y la BBDD se encargan del trabajo sucio de conversion.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar null (nolo) en un campo fecha en Firebird cahosoft Conexión con bases de datos 3 19-04-2014 09:54:17
Error al hacer insert (campo fecha) en firebird con fibplus Acanol Firebird e Interbase 7 15-06-2006 09:05:07
Problema con la Fecha ramonibk Varios 1 28-02-2005 19:30:29
Formato fecha en Firebird 1.5.1 mosorio Firebird e Interbase 1 05-11-2004 17:23:46
Formato fecha en FireBird HombreSigma Firebird e Interbase 2 22-06-2003 22:18:00


La franja horaria es GMT +2. Ahora son las 16:25:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi