Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Convertir campo DATE para obtener HORA (https://www.clubdelphi.com/foros/showthread.php?t=76950)

AnuardMichelen 07-12-2011 15:21:36

Convertir campo DATE para obtener HORA
 
Saludos amigos espero que esten bien en esta epoca de navidad:)

Tengo una base de datos en Firebird y mi tabla Horario_Doctores, entonces tengo varios campos que son tipos DATE y la informacion que tienen esos campo me sale con una fecha y luego la hora, entonces lo que nesecito es solo la hora.

por ejemplo en la tabla se ve de esta manera:

Lun_desde = 30.12.1899 09:00:00

y me gustaria que saliera:

Lun_desde = 09:00 p.m.

Gracias por sus ayudas!!!!

marcoszorrilla 07-12-2011 16:05:48

Si tienes campos persistentes en el componente de conexión a la Tabla, puedes indicar el Display format como hh:mm por ejemplo.

Un Saludo.

olbeup 08-12-2011 02:02:32

Prueba con esto también:
Código Delphi [-]
...
var
  Hora: TTime;
begin
  with ADOQuery do
    Hora := FieldByName('Lun_desde').AsDateTime;
end;
También con esto:
Código Delphi [-]
...
var
  Hora: String;
begin
  with ADOQuery do
    Hora := FormatDateTime('hh:nn', FieldByName('Lun_desde').AsDateTime);
end;
Un saludo.

Delphius 08-12-2011 05:58:57

Hola,

Pues no entiendo... ¿Cómo es que se pretende recuperar la hora de un campo DATE? ¡En un DATE sólo se tiene fecha más no horas! Para tener fecha y hora se requiere un campo TIMESTAMP.
Lo que los componentes, en tu aplicación, hacen es representar el dato como si se tratase de un tipo TDateTime. Es más, el tipo TDate y el tipo TTime no son más que unos alias del TDateTime con la parte hora y fecha nulos respectivamente.

Para el caso, para un DATE la hora nula corresponde a 00:00:00. De allí que no tiene sentido leer una hora de un DATE... ¡siempre será nula! Algo similar sucede para un TIME; siendo la fecha nula 01/01/1900 si no me falla la memoria.

¿Al final tus campos son de fecha o fecha/hora? :confused:

Saludos,

Casimiro Notevi 08-12-2011 11:00:31

Seguramente está usando el dialecto 1, que usa campos date para almacenar fecha y hora al mismo tiempo.
Para presentarlos, como bien se ha comentado más arriba, sólo hay que poner la máscara 'hh:mm'.
Con el dialecto 3 se diferencia: date=fecha, time=hora, timestamp=fecha y hora juntas (como el date del dialecto 1).

birmain 10-12-2011 19:55:43

Conversión por cast
 
Código SQL [-]

fecha = cast(fecha_hora as date);
hora  = cast(fecha_hora as time);
-- Donde fecha es del tipo date, fecha_hora timestamp y hora time


La franja horaria es GMT +2. Ahora son las 17:01:02.

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