Ir al contenido


Foto

HORAS EN FIREBIRD


  • Por favor identifícate para responder
6 respuestas en este tema

#1 JRichard

JRichard

    Advanced Member

  • Miembros
  • PipPipPip
  • 67 mensajes

Escrito 20 marzo 2014 - 05:30

Saludos!

Vengo con una pequeña duda, espero me puedan ayudar.

Actualmente me encuentro realizando una aplicación, resulta que necesito almacenar la Fecha y Hora pero por separado, en campos distintos dentro de una tabla. El tipo de dato a utilizar para la Fecha se que es DATE y el de la HORA TIME.

Ahora, la duda esta en saber si puedo almacenar en un campo tipo TIME horas en formato "08:30:00 a.m." o "03:35:00 p.m." por ejemplo.

Realmente no he probado y pues pregunto para ahorrar un poco de tiempo al momento de comenzar con las pruebas.

Espero me puedan sacar de esta duda, Gracias!
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 20 marzo 2014 - 08:34

Creo que ésto te aclarará tus dudas.  ;)

Saludos,
  • 0

#3 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 02 abril 2014 - 11:12

Para almacenar por separado días de horas, debes usar el dialecto 3 de firebird, no el 1. Esta es una de las diferencias entre uno y otro.
http://www.firebirds...ix-dialect.html en caso que hayas creado la base de datos.
Pero esto es algo que debes modificar al crear la db.

Este es un fragmento del texto del enlace de arriba que muestra las diferencias entre los dialectos:

  •     Dialect 1 stores date and time information in a DATE data type and has a TIMESTAMP data type which is identical to DATE. Double quotes are used to delimit string data. The precision for NUMERIC and DECIMAL data types is less than a dialect 3 database and if the precision is greater than 9, Firebird stores these as DOUBLE PRECISION. INT64 is not permitted as a data type.

  •     Dialect 2 is available only on the Firebird client connection and cannot be set in the database. It is intended to assist debugging of possible problems with legacy data when migrating a database from dialect 1 to 3. This dialect cannot be set for a database using gfix. (See below.)

  •     Dialect 3 databases allow numbers (DECIMAL and NUMERIC data types) to be stored as INT64 when the precision is greater than 9. The TIME data type is able to be used and stores time data only. The DATE data type stores on date information. Double quotes can be used but only for identifiers that are case dependent, not for string data which has to use single quotes.


  • 0

#4 JRichard

JRichard

    Advanced Member

  • Miembros
  • PipPipPip
  • 67 mensajes

Escrito 02 abril 2014 - 08:26

Saludos.

Mi base de datos esta haciendo uso del "dialect 3" ahora por lo visto voy a tener que cambiar el diseño de la tabla donde almaceno fechas y horas. Según esta información que me pasaste.

Debido a que en mi tabla utilice el tipo de dato TIMESTAMP que es usado en el dialect 1, o sea, yo pensé que era más fácil concatenar la fecha y hora al momento de guardarla en la tabla y luego para cualquier consulta separar la fecha y la hora en dado caso que lo necesite. Pero esto me estaba generando un error de base de datos al momento de registrar y por lo que acabo de ver lo más seguro es que sea por el dialect 3. Ahora me toca separar la fecha y la hora en campos distintos DATE y TIME jejeje! Voy hacer la prueba y te digo que pasa!

Gracias por responder!
  • 0

#5 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 05 abril 2014 - 12:41

Hola JRichard

Uso firebird, para todo... de hecho tengo un aplicación que es para control de entrada de empleados y otro para control de entradas de vistas, esta esta en dialecto 3 y uso TIMESTAMP, para guardar la FECHA_HORA y no tengo ningún tipo de problema, cual es el problema que estas enfrentando?. Si, también esta el tipo TIME y DATE por separado, pero se por experiencia propia que TIMESTAMP funciona de maravilla.

Saludos

Rafael Liriano
  • 0

#6 JRichard

JRichard

    Advanced Member

  • Miembros
  • PipPipPip
  • 67 mensajes

Escrito 05 abril 2014 - 04:35

Saludos.

El asunto es que según la documentación de Firebird cuando se tiene una base de datos con dialect 1 solo se permite para fechas y horas el uso del tipo "TIMESTAMP" y cuando se trata del dialect 3, además del "TIMESTAMP" se pueden utilizar los tipos de datos "DATE" y "TIME".

Me encuentro realizando una aplicación en Delphi que gestione solicitudes de servicios. Ejemplo: Un cliente llama y solicita un servicio de computación. Al momento de registrar la solicitud debo registrar la fecha y hora en que dicha solicitud sera atendida y la fecha y hora en que se debería terminar. Esto con la finalidad de calcular las horas que tardo un técnico en realizar los servicios de una solicitud.

Deseaba guardar la fecha en un campo tipo "DATE" y la hora en otro campo tipo "TIME". Estoy utilizando la tecnología DBExpress para acceder a la Base de Datos en Firebird, dicha conexión esta configurada para hacer uso del dialect 3, del mismo modo mi base de datos esta configurada con el dialect 3.

Entonces, al momento de registrar una solicitud me da el error que muestro en la imagen adjunta. Como si estuviera utilizando dialect 1. Lo cual es falso, reitero, tanto mi base de datos como la conexión a esta están configuradas para hacer uso del dialect 3.

Ya he eliminado y creado la conexión varias veces, así mismo, he registrado mi base de datos en firebird varias veces y sigue dando el mismo error. También he sustituido el archivo fbclient.dll y gds32.dll varias veces.

En vista de que me seguía dando error al colocar campos de tipo "DATE" y "TIME" opte por cambiarlos a "TIMESTAMP" y todo funciona bien. Pero me quedo esa duda del porque el error. Pero bueno, por ahora voy a utilizar campos "TIMESTAMP" para terminar mi aplicación.

Gracias por responder.
  • 0

#7 JRichard

JRichard

    Advanced Member

  • Miembros
  • PipPipPip
  • 67 mensajes

Escrito 05 abril 2014 - 04:38

Saludos.

El asunto es que según la documentación de Firebird cuando se tiene una base de datos con dialect 1 solo se permite para fechas y horas el uso del tipo "TIMESTAMP" y cuando se trata del dialect 3, además del "TIMESTAMP" se pueden utilizar los tipos de datos "DATE" y "TIME".

Me encuentro realizando una aplicación en Delphi que gestione solicitudes de servicios. Ejemplo: Un cliente llama y solicita un servicio de computación. Al momento de registrar la solicitud debo registrar la fecha y hora en que dicha solicitud sera atendida y la fecha y hora en que se debería terminar. Esto con la finalidad de calcular las horas que tardo un técnico en realizar los servicios de una solicitud.

Deseaba guardar la fecha en un campo tipo "DATE" y la hora en otro campo tipo "TIME". Estoy utilizando la tecnología DBExpress para acceder a la Base de Datos en Firebird, dicha conexión esta configurada para hacer uso del dialect 3, del mismo modo mi base de datos esta configurada con el dialect 3.

Entonces, al momento de registrar una solicitud me da el error que muestro en la imagen adjunta. Como si estuviera utilizando dialect 1. Lo cual es falso, reitero, tanto mi base de datos como la conexión a esta están configuradas para hacer uso del dialect 3.

Ya he eliminado y creado la conexión varias veces, así mismo, he registrado mi base de datos en firebird varias veces y sigue dando el mismo error. También he sustituido el archivo fbclient.dll y gds32.dll varias veces.

En vista de que me seguía dando error al colocar campos de tipo "DATE" y "TIME" opte por cambiarlos a "TIMESTAMP" y todo funciona bien. Pero me quedo esa duda del porque el error. Pero bueno, por ahora voy a utilizar campos "TIMESTAMP" para terminar mi aplicación.

Gracias por responder.

Archivos adjuntos


  • 0




IP.Board spam blocked by CleanTalk.