2013-10-18 2 views
-1

초 단위로 차이를 찾기 위해 찾을 수 있습니다. 하지만 밀리 초 단위로 차이를 찾는 방법을 찾을 수는 없습니다. 자바 특정 코드에 대한두 datetime의 차이 (밀리 초 단위)

select (start_time - datetime(2013-08-12 19:05:34.223) year to fraction(3)) 
    ::interval second(9) to second 
    from table1 where event_id = 1 
+0

왜 자바 태그를 한 후 팔초 기다린 나는 위의 선택을 다시 실행? – SpringLearner

+0

자바에서 이것을하고 싶습니다. 그래서 경우에 따라서는이를 달성하기위한 자바 고유의 조잡한 방법이있다. – Andy897

+0

정확히 달성하기 위해 필요한 것이 있습니까? 그것을 성취하려고 무엇을 시도 했습니까? –

답변

3

우선 USEOSTIME 매개 변수가 활성화됩니다 (기본적으로 그렇지 않습니다).
Informix는 데이터베이스가 OS TIME (OS gettime() 기능을 사용함)을 사용하도록 구성된 경우에만 분수/밀리 초를 표시합니다.
이 옵션을 비활성화하면 소수 부분은 항상 0입니다.

활성화되지 않은 경우 사용자 또는 DBA는 onconfig 파일에서이를 변경하고 엔진을 다시 시작해야합니다.

은 데이터베이스에 사용 된 모든 타임 스탬프에 영향을주기 때문에주의하시기 바랍니다.

다음
select * from sysmaster:sysconfig where cf_name = 'USEOSTIME'; 
    cf_id   54 
    cf_name  USEOSTIME 
    cf_flags  0 
    cf_original 1 
    cf_effective 1 
    cf_default 0 
    1 row(s) retrieved. 

drop table if exists tp01; 
    Table dropped. 

create temp table tp01 (dt datetime year to fraction); 
    Temporary table created. 
insert into tp01 values (current); 
    1 row(s) inserted. 

select * from tp01; 
    dt 
    2013-10-18 08:29:36.864 
    1 row(s) retrieved. 
select dt, current, (current - dt)::interval second(9) to fraction from tp01; 
    dt      (expression)   (expression) 
    2013-10-18 08:29:36.864 2013-10-18 08:29:36.864   0.000 
    1 row(s) retrieved. 
select dt, current, ((current - dt)::interval second(9) to fraction)*1000 from tp01; 
    dt      (expression)   (expression) 
    2013-10-18 08:29:36.864 2013-10-18 08:29:36.865   1.000 
    1 row(s) retrieved. 

여기 ...

dt      (expression)   (expression) 
2013-10-18 08:30:44.539 2013-10-18 08:30:53.058   8.519 

dt      (expression)   (expression) 
2013-10-18 08:30:44.539 2013-10-18 08:30:53.058  8519.000 
+0

큰 도움 !!!! 매우 유익한 ... 감사합니다. 그냥 하나의 빠른 Q .. 9는 "second (9)"에 무엇을 의미합니까? – Andy897

+0

@ Andy897 그래서 귀하의 질문은 모두 Java를 목표로하지 않았습니다. \ –

+1

간격을 사용하면 더 큰 값의 "범위"를 지정해야합니다. 예를 들어 interval 데이터 타입에이 값을 넣을 수 있습니다 :'10432.455'는 10,432 초를 의미합니다. (9)는 9 자리 ~ = 999,999,999 초를 사용할 수 있다는 것을 의미하며, (3)으로 제한하면 999 초로 제한되는 값을 가질 수 있습니다 ....... : 이는 캐스트를 사용하여 일로 쉽게 변환 될 수 있습니다 ':: 간격 일 (3) ~ 두 번째'. – ceinmart

-3

죄송하지만 아래의 U에 도움이 될 수있는 SQL 코드는 다음과 같습니다 당신이 정말로 데이터베이스에서 밀리 초 세부를 원한다면, 당신이 있는지 확인해야합니다

select (datediff(ss,StartDate,EndDate)*1000) 
+0

.... Informix에는'datediff()'함수가 있는지 모르겠습니다. DB2 버전은 추정치를 리턴하는데, 이는 종종 쓸모 없게됩니다. –

+0

이 기능은 informix (현재 버전, 12.10)에 없습니다. – ceinmart