0

我正在尝试获取交易的经过时间。我需要将其提取到一个文件中。我在 Derby 网上找到了一些 SQL,但它并不能如我所愿:

ij> create  table atab1(ts timestamp, i int, ts1 timestamp); 
ij> insert into atab1 values(CURRENT_TIMESTAMP, 1, CURRENT_TIMESTAMP); 
1 row inserted/updated/deleted 
ij> insert into atab1 values(CURRENT_TIMESTAMP, 2, CURRENT_TIMESTAMP); 
1 row inserted/updated/deleted 
ij> select {fn TIMESTAMPDIFF(SQL_TSI_SECOND, ts1,ts)} as TS_DIFF from atab1; 
TS_DIFF 
----------- 
0 
0 

atab1 表的内容是:

TS                           |I          |TS1
-----------------------------------------------------------------------
2012-08-05 00:20:16.675      |1          |2012-08-05 00:20:16.675
2012-08-05 00:20:29.081      |2          |2012-08-05 00:20:29.081

该声明:

select {fn TIMESTAMPDIFF(SQL_TSI_SECOND, ts1,ts)} as TS_DIFF from atab1; 

将始终给出 0,因为 ts1 和 ts 的值相同

我应该如何调整语句以显示 ts 和 ts1 的值之间的差异?

4

1 回答 1

0

似乎您应该有两行不同的行:一是起始行,一是结束行。每一行都应该有一个事务 id 和一个时间戳,一个应该有一个代码表明它是开始行,而另一行应该有一个代码表明它是结束行。

然后,您可以通过在其事务 id 上自连接表来选择这两行,然后您可以从结束时间中减去开始时间以获得经过的时间。

于 2012-08-04T23:39:30.953 回答