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,所有计算都应该正常工作。