Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Guardar solo la hora en un campo DATE

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Guardar solo la hora en un campo DATE Responder citando

Tengo una base de datos en SQL, creada con Interbase Windows ISQL.

Uno de los campos (DBEHORA_RECEPCION) es de tipo DATE. En un de los formularios, utilizo un DateTimePicker (DTPHora) con el Kind=dtkTime para seleccionar la hora.

Lo paso al campo a guardar de la siguiente forma:

TDateTime DateTime = DTPHora->Time;
DBEHORA_RECEPCION->Text = TimeToStr(DateTime);


El caso es que luego en la base de datos me ha guardado la fecha y la hora. ¿como puedo hacer para que solo se guarde la hora, sin ninguna fecha? ¿necesito cambiar algo en la base de datos? .

He probado a definir el campo DBEHORA_RECEPCION de tipo TIME pero el script .sql en Interbase Windows ISQL no me lo acepta, me da error

Un saludo
Volver arriba
Mensaje    Asunto: Responder citando

hola que tal.

no se si te funcione, pero yo uso esta forma para capturar la pura hora del sistema:

Código:
Tabla_Registros->FieldByName("Hora_Entrada")->AsString=TimeToStr(Time());


No se si esto es lo que quieras, pero por lo menos puedes darte una idea.[/quote]
_________________
I.S.C. Joel Salinas Alvarado
Linux User:454009
the human knowledge belong to the world
"Hoy el Universo Debian es mas GRANDE"
Zacatecas, Mexico.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Saludos

Un campo Date en un abase da datos se compone de dos partes.
El entero que sirve para guardar el incrementeo en días de una fecha definida, (generalmente el 30 de diciembre de 1899) y una parte que es una fracción decimal de un entero que representa el incremento de horas, minutos y segundos de un día.

Por lo tanto no es posible guardar solo la hora, hay que guardar hora y fecha. Aún y cuando guardaras un valor entero de 0 y la hora decimal (0.25) tendrías un valor de 30 de diciembre de 1899 6:00 a.m.

Te recomiendo que guardes la hora, el minuto y el segundo por separado, en un entero cada uno (no se si exista el tipo smallint o tinyint en tu motor de base de datos los que serían mejores para el caso), así solo tienes que utilizar la función un DecodeTime para obtener los valores que irán a tu base de datos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

El problema viene probablemente si estas utilizando Interbase 6.0 en adelante o Firebird 1.0x en adelante, el problema es el siguiente en Interbase 6.0 se introdujeron los Dialectos, por compatibilidad con las anteriores versiones hay que utilizar el Dialecto 1, donde existen los tipos TIMESTAMP, pero NO existen los tipos DATE ni TIME, sin embargo en el Dialecto 3, que es donde se usa todo el potencia de las nuevas versiones de Interbase o Firebird, tienes tanto los tipos DATE, TIME como TIMESTAMP. Logicamente TIMESTAMP, almacena una marca de tiempo desde no sé que fecha (la típica esa digo yo de 1960 o algo así), por lo que se guarda tanto la hora como la fecha.

Aun así no deberías tener problema al leer o guardar este valor, sabiendo con lo que estas trabajando.

Creo que por ahí ya hablamos de esto, buscalo por el foro con la opción buscar ahora no recuerdo el POST concreto.

Yo la verdad es que para las BD en las que uso Dialect 1, para las horas (donde solo quiero hora a la fuerza) uso un varchar de 10, pero esto como digo son chapuzas mías... Aunque siempre puedes hacer un CAST en la propia consulta para convertir un valor, por cierto si quieres también puedes utilizar EXTRACT para extraer partes concretas de un campo TIMESTAMP... y así fabricarte tu HORA a tu gusto en una consulta, mirate la ayuda, (no estoy en casa ahora), pero en cuanto llegue esta noche te pongo como podrías construir una HORA o una FECHA desde un TIMESTAMP haciendolo en una consulta SQL.

Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.