Yo uso una combinacion , guardo como datetime los campos , pero los trato por separado ... es decir tengo un campo para la fecha y otro para la hora , y este lo comprueba a su vez con una pequeña clase , para comprobar que el contenido es una hora valida (ya que el campo es caracter) ... y luego lo guardo mas o menos asi :
if !empty(thisform.campos(13))
replace servicio.svisitat with datetime(year(thisform.campos(13)),month(thisform.campos(13)),day(thisform.campos(13)),val(substr(thisform.campos(21),1,2)),val(substr(thisform.campos(21),3,2)))
replace servicio.stiponotan with thisform.campos(14)
else
replace servicio.svisitat with { / / }
replace servicio.stiponotan with 0
endif
y lo recupero mas o menos asi :
thisform.campos(13)=ctod(dtoc(servicio.svisitat))
thisform.campos(21)=substr(ttoc(servicio.svisitat),12,2)+substr(ttoc(servicio.svisitat),15,2)
----
como ves es una combinacion de campos datetie y caracter ... ademas tengo otra clase para comprobar si las horas son correctas o si la primera es menor que la segunda para calcular el tiempo real ... si la necesitas o la quieres ver mandame un correo ...
Espero te sirva...