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

Sql 以毫秒为单位的两个日期时间之间的差异(Informix),sql,datetime,informix,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 对于java特定的代码很抱歉,但下面是对您有用的sql代码: select (datediff(ss,StartDate,E

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

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

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

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

首先,如果确实需要数据库中的毫秒详细信息,则需要检查USEOSTIME参数是否已激活(默认情况下未激活)。
Informix仅在数据库配置为使用OS时间时显示小数/毫秒(这意味着它们使用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

我想用java做这个。所以,以防万一,如果有一些特定于java的粗糙方法来实现这一点,您到底需要实现什么?您试图实现什么?您发布的代码是sql查询,与java无关。。。。。我不确定Informix是否有
datediff()
函数。请注意,DB2版本返回一个估计值,这通常是毫无价值的。此函数在informix(当前版本,12.10)中不存在。datediff函数属于mssqlGreat help!!!!而且信息量很大。。。谢谢你,巴德。只要一个简单的问题。。9在“秒(9)”和Y897中代表什么?因此您的问题毕竟不是针对Java的=\n当使用interval时,您需要指定较大值的“范围”,例如,您可以将此值放入interval datetype:
10432.455
什么是10432秒。(9)表示可以使用9位数~=9999999秒,如果限制为(3),则可以将值限制为999秒。。。。。。。另外:使用cast
:interval day(3)到second
,这可以很容易地转换为天。我忘了说。。。。USEOSTIME只有在您使用
current
语句时才有用,如果您的分数值是从应用程序输入的,请不要担心USEOSTIME,所有计算都应该正常工作。