Question

J'ai une base de données Firebird (fonctionnant sur la version de serveur 2.1.3) et je me connecte avec Delphi 2007 à l'aide des objets DBExpress (à l'aide du pilote Interbase)

L'une de mes tables de la base de données ressemble à ceci

CREATE TABLE MYTABLE
(
  MYDATE Timestamp NOT NULL,
  MYINDEX Integer NOT NULL,
  ...
  Snip
  ...
  PRIMARY KEY (MYDATE ,MYINDEX)
);

Je peux ajouter des éléments au tableau, puis dans Flame Robin, le champ d’horodatage a une valeur en millisecondes.

Mais lorsque je sélectionne tout ( select * from MYTABLE ) de la table, je ne peux pas obtenir la valeur en millisecondes, car elle est toujours renvoyée sous la forme 000.

Cela pose des problèmes majeurs car il fait partie de la clé primaire (malheureusement, je n’ai pas conçu la table et je n’ai pas le pouvoir de la modifier).

J'ai essayé ce qui suit pour obtenir la valeur en millisecondes:

sql1.fieldbyname('MYDATE').AsDateTime;
sql1.fieldbyname('MYDATE').AsSQLTimeStamp;
sql1.fieldbyname('MYDATE').AsStirng;
sql1.fieldbyname('MYDATE').AsFloat;

Mais ils retournent tous le 14/09/2009 à 14 h 25 min 6 s lorsqu'ils sont formatés.

Comment extraire la milliseconde d'un horodatage?

MISE À JOUR: Si cela peut aider quelqu'un à l'avenir, voici les pilotes que j'ai essayés pour DBExpress et les résultats.

Était-ce utile?

La solution

Je ne sais pas si Firebird prend réellement en charge les millisecondes, mais je sais pertinemment que le pilote InterBase pour Delphi 2007 ne le fait pas. En effet, InterBase ne renvoie pas des millisecondes dans son API C; Bien que InterBase stocke DateTimes avec une précision inférieure à la milliseconde, l'API InterBase renvoie les heures dans une structure C TM qui ne contient pas de champ milliseconde. Par conséquent, le pilote dbExpress conçu pour InterBase ne le supportera pas. Il vous faudra donc au minimum changer de pilote, en supposant que Firebird le supporte réellement.

Autres conseils

Un de mes collègues ( Edwin van der Kraan ) vient de cocher: cela fonctionne avec FIBplus !

Il a vérifié avec FIBPlus version 6.9.6 et Firebird 2.1.1.

Il insère un insert current_timestamp et l'extrait avec FormatDateTime ('jj-mm-aaaa hh: nn: ss: zzz', TestpFIBDataSetMYDATE.Value) Puis il a retrouvé la date et l'heure, millisecondes comprises.

- jeroen

La FAQ Firebird n ° 305 explique comment résoudre ce problème facilement via varchar CAST.

Les pilotes Firebird dbx existent (vous pouvez les essayer):

http://sites.google.com/site/dbxfirebird/ (gratuit )

http://www.upscene.com/products.dbx.dbx_fb.php

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top