![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
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 |
|
#2
|
|||
|
|||
|
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.
Espero les sea de utilidad. Luis F. Buelvas T.
__________________
Luis Fernando Buelvas T. |
|
#3
|
|||
|
|||
|
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.... |
|
#4
|
||||
|
||||
|
Cita:
Saludos
__________________
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! |
|
#5
|
||||
|
||||
|
Cita:
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! |
|
#6
|
||||
|
||||
|
Pues como ha dicho ya Mick prefiero delegar en Delphi:
Hacerlo de otra forma ensucia mucho el código; tampoco nos asegura de que ese motor espere una fecha en formato mm/dd/yyyy, y en último caso, una fecha del tipo 01/02/2006 puede ser interpretada tanto el 2 de Enero, como de el 1 de Febrero. Os remito mi experiencia: trabajando con Oracle y usando un rango de fechas desde 01/02/2005 al 23/02/2005 la primera fecha la encajaba en el formato mm/dd/yyyy y la segunda fecha en dd/mm/yyyy; funcionar.... funcionaba, pero realmente no hacía lo que esperaba. Moraleja: Parámetros pepe, siempre parámetros ![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
|||
|
|||
|
No hago nada extraño
Buenas a todos, vtdeleton me pregunta que como lo hago, y ciertamente no hago nada raro.
Con la fecha de un datetimepicker y se la paso a la sentencia SELECT como parametro. Algo así, por ej:
donde fech1 es el parámetro que recoge el valor que le paso desde el datetimepicker, y al hacer activa la consulta(Si uso FBIplus) lanza el error de conversión de fecha, y es porque al pasar por ej. 21/12/2002 el considera que 21 es el mes, y evidentemente solo hay 12 meses, en cambio lo mismo lo hago con Mercury components o los de Interbase de Delphi y la consulta la hace perfecta(21 sería el día, y no el mes), y he hecho montón de pruebas. Lo que digo: el problema se presenta solo con FBIplus, y haciendo lo mismo con otros componentes todo va bien, sin tocar nada. Un saludo... |
|
#8
|
||||
|
||||
|
Por curiosidad, ¿como tienes el formato de fecha definido en Windows? ¿el idioma de windows cual es?
Lo pregunto porque me resulta extraño que FIBPlus, uno de los más aclamados componentes, tengan ese tipo de "bug" (por llamarlo de alguna forma). ¿usas una versión beta o alpha de esos componentes? Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#9
|
||||
|
||||
|
Con IBX y FIBPlus me funcionan igual las fechas
Hola
![]() Estuve haciendo pruebas con respecto a tu problema. Estoy usando dialecto 3 con Firebird 1.5.3, Delphi 7, FIBPlus 6.3 (NO la trial), IBX 7.06, el tipo de dato para la fecha DATE. Al pasar la fecha con separadores '/' o con '-' lo hice de la forma mm/dd/yyyy ó mm-dd-yyyy Al pasar la fecha con separadores '.' lo hice de la forma dd.mm.yyyy De acuerdo a esto si quiero pasar el 1 de Febrero de 2006 tengo que poner 02/01/2006 ó 01.02.2006 De esta manera NO obtuve NINGUN ERROR, usando los 2 componentes de acceso a base de datos (IBX y FIBPlus). Al decir ningun error me refiero a que no obtenia errores de conversion y a que me devolvia el registros con la fecha (correcta) que yo le indicaba. Con AMBOS componentes obtuve ERROR al pasar la fecha en esta forma 30/04/2006 ó sea que en ningun caso me acepto la fecha 30/04/2006 COMO VALIDA; pero tu dices que con IBX si te funciona? Que version de Firebird, IBX, FibPlus, usas? Estas usando el tipo de dato DATE o el TIMESTAMP? PD.- Cuando dices que lo tienes configurado como dd/mm/yyyy, supongo que te refieres a la propiedad DefaulFormats del TpFIBDataSet. Te dire que esta propiedad SOLO sirve para indicar la forma en que se mostrara la fecha y no tiene nada que ver con los parametros que le pases al TpFIBDataSet |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|