문제

파이어 버드 데이터베이스 (서버 버전 2.1.3에서 실행)가 있고 dbexpress 객체 (인터베이스 드라이버 사용)를 사용하여 Delphi 2007과 연결하고 있습니다.

데이터베이스의 내 테이블 중 하나가 다음과 같은 것 같습니다.

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

나는 테이블에 추가 할 수 있고 Flame Robin에서는 타임 스탬프 필드가 밀리 초 값을 갖는 것으로 표시됩니다.

그러나 내가 선택할 때 모든 것을 할 때 (select * from MYTABLE) 테이블에서 나는 항상 000으로 반환되므로 밀리 초 값을 얻을 수 없습니다.

이것은 기본 키의 일부이므로 주요 문제를 일으 킵니다 (불행히도 테이블을 설계하지 않았으며 변경할 권한이 없습니다).

밀리 초 값을 얻기 위해 다음을 시도했습니다.

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

그러나 그들은 모두 2009 년 9 월 14 일 14 : 25 : 06.000을 형식화 할 때 돌아옵니다.

타임 스탬프에서 밀리 초를 어떻게 검색합니까?

업데이트:이것이 미래의 모든 사람에게 도움이되는 경우, 여기 DBEXPRESS를 위해 시도한 운전자와 결과가 있습니다.

도움이 되었습니까?

해결책

Firebird가 실제로 밀리 초를 지원하는지는 모르겠지만 Delphi 2007의 인터베이스 드라이버는 그렇지 않다는 사실을 알고 있습니다. 인터베이스가 C API에서 밀리 초를 반환하지 않기 때문입니다. 인터베이스는 DateTimes를 밀리 초 정밀도로 저장하지만, 인터베이스 API는 밀리 초 필드를 포함하지 않는 C TM 구조물에서 시간을 반환합니다. 따라서 인터베이스를 위해 설계된 DBEXPRESS 드라이버는이를 지원하지 않을 것입니다. 따라서 Firebird가 실제로 이것을 지원한다고 가정하면 운전자를 최소한으로 변경해야합니다.

다른 팁

내 동료 (에드윈 반 데르 크라 안) 방금 확인 : 함께 작동합니다 fibplus!

그는 Fibplus 버전 6.9.6과 Firebird 2.1.1을 확인했습니다.

그는 current_timestamp 삽입물을 삽입하고 추출했습니다. FormatDateTime('dd-mm-yyyy hh:nn:ss:zzz', TestpFIBDataSetMYDATE.Value)그런 다음 그는 밀리 초를 포함하여 날짜와 시간을 되찾았습니다.

-jeroen

파이어 버드 FAQ #305 간단한 Varchar 캐스트를 통해이 문제를 쉽게 작업하는 방법을 설명합니다.

Firebird DBX 드라이버가 존재합니다 (시도 할 수 있음) :

http://sites.google.com/site/dbxfirebird/ (무료)

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top