[Lazarus-es] Firebird, Zeos, charset UTF8 y campo tipo Tme

José Mejuto joshyfun en gmail.com
Mie Sep 22 00:39:56 CEST 2010


Hello Walter,

Tuesday, September 21, 2010, 9:36:53 PM, you wrote:

WM> table.Append ;
WM> table.fieldbyname('HORA_START'):=Now;
>> Es así ? Por cierto, que si es "Time" no hay fecha, eres consciente de
>> este hecho no ?
WM> Si...si...

Lo primero, y sin intentar ofender, esto no es php ni visual basic ;)
Pascal es un lenguaje "fuertemente tipado", y ahí estás forzando el
uso de "intercambiadores" variant, así que ajusta el tipo:

table.fieldbyname('HORA_START').asTime:=Now;

Entiendo que así debería de funcionar, pero sólo para "HORA_END" que
tiene formato "TIME", "HORA_START" tiene formato "TimeStamp", por lo
tanto has de entregarle una fecha también:

table.fieldbyname('HORA_START').asDateTime:=Now;
table.fieldbyname('HORA_END').asTime:=Now;

En el DDL pones "default" del timestamp una hora, sin fecha, así que
la fecha será si no me equivoco 1/1/1753 lo cual te puede liar.

Lo de pasar una hora con formato AM/PM no es buena idea, mejor usa el
formato de 24 horas (AM/PM en Firebird antes daba error, ahora no
estoy seguro). De hecho se recomienda pasar una hora como:

HH:NN:SS.mmm con todos sus dígitos: "01:02:03:456" sin omotir ninguno,
y en la fecha:

CCYY-MM-DD osea, 2010-09-22 para hoy.

http://www.firebirdsql.org/doc/contrib/FirebirdDateLiterals.html

-- 
Best regards,
 José





More information about the Lazarus-es mailing list