Firebird データベース (サーバー バージョン 2.1.3 で実行) があり、DBExpress オブジェクトを使用して (Interbase ドライバーを使用して) Delphi 2007 で接続しています。
データベース内の私のテーブルの1つはこのようになります
CREATE TABLE MYTABLE
(
MYDATE Timestamp NOT NULL,
MYINDEX Integer NOT NULL,
...
Snip
...
PRIMARY KEY (MYDATE ,MYINDEX)
);
テーブルに追加できます。Flame Robin では、タイムスタンプ フィールドにミリ秒の値があることが示されます。
しかしselect * from MYTABLE
、テーブルで select all ( ) を実行すると、常に 000 として返されるため、ミリ秒の値を取得できません。
これは主キーの一部であるため、大きな問題を引き起こします (残念ながら、私はテーブルを設計しておらず、変更する権限もありません)。
ミリ秒の値を取得するために次のことを試しました。
sql1.fieldbyname('MYDATE').AsDateTime;
sql1.fieldbyname('MYDATE').AsSQLTimeStamp;
sql1.fieldbyname('MYDATE').AsStirng;
sql1.fieldbyname('MYDATE').AsFloat;
ただし、フォーマットすると、すべて 14/09/2009 14:25:06.000 が返されます。
タイムスタンプからミリ秒を取得するにはどうすればよいですか?
更新: これが将来誰かに役立つ場合に備えて、DBExpress で試したドライバーとその結果を次に示します。
- Embarcadero - Firebird 用 dbExpress ドライバ(Delphi 2010 試用版) - タイムスタンプでミリ秒がサポートされていません。
- Chau Chee Yang の - Firebird 用 dbExpress ドライバ(Delphi 2007) - タイムスタンプでミリ秒がサポートされていません。
- UpScene - InterXpress for Firebird (Delphi 2007) - タイムスタンプでミリ秒がサポートされています。
- DevArt - InterBase 用 dbExpress ドライバ(Delphi 2007) - タイムスタンプでミリ秒がサポートされています。