两个日期时间之间的差异(以毫秒为单位)(Informix)

时间:2013-10-18 05:07:55

标签: sql datetime informix

我可以找到这样的东西,以便在几秒钟内找到差异。但我无法找到如何找到以毫秒为单位的差异。

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

2 个答案:

答案 0 :(得分:3)

首先,如果您确实需要数据库中的毫秒详细信息,则需要检查USEOSTIME参数是否已激活(默认情况下不是)。
Informix仅显示数据库配置为使用OS TIME时的小数/毫秒(这意味着它们使用OS gettime()函数)。
禁用此选项时,小数部分始终为零。

如果未激活,则您或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.

在这里等待8秒后我重新运行上面的选择......

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

答案 1 :(得分:-3)

很抱歉java特定代码,但下面是对你有用的sql代码:

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