I'm having wrong results when getting value from DATE fields on Firebird.
Always the year comes incorrect. Please, see the code below:
Code: Select all
procedure TFrmPrincipal.Button1Click(Sender: TObject);
var
DBXTrn: TDBXTransaction;
DBXCmd: TDBXCommand;
DBXRdr: TDBXReader;
dDta: TDateTime;
begin
dDta := 0;
if DM.DBXCon.Connected then
begin
DBXTrn := DM.DBXCon.DBXConnection.BeginTransaction(TDBXIsolations.ReadCommitted);
try
DBXCmd := DM.DBXCon.DBXConnection.CreateCommand;
try
DBXCmd.Text := 'SELECT CAST(''NOW'' AS DATE) AS MYDATE' +
' FROM RDB$DATABASE';
DBXCmd.Prepare;
DBXRdr := DBXCmd.ExecuteQuery;
if DBXRdr.Next then
dDta := DBXRdr.Value['MYDATE'].GetDate;
DBXCmd.Close;
DBXRdr.Free;
finally
DBXCmd.Free;
end;
DM.DBXCon.DBXConnection.CommitFreeAndNil(DBXTrn);
except
DM.DBXCon.DBXConnection.RollBackFreeAndNil(DBXTrn);
raise;
end;
end;
ShowMessage(FormatDateTime('dd/mm/yyyy', dDta));
end;
The RDB$DATABASE was used for sample, but this happens with any date field.
Does anyone knows about this ?
To try the sample don't forget to add DBXCommon to your uses clause.
Firebird 2.1.4 - Delphi 2010 - DBXIda 2.70.28
(By the way, the new resource "lock timeout for wait transactions" is working perfectly).
Thanks,
Fábio R. Bot da Silva.