德比两个日期之间的时间戳

时间:2012-08-04 23:24:06

标签: sql database derby

我正在尝试获取交易所用的时间。我需要将其解压缩到一个文件。 我在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的值之间的差异?

1 个答案:

答案 0 :(得分:0)

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

然后,您可以通过在其事务ID上自行加入表来选择这两行,然后您可以从结束时间中减去开始时间以获取已用时间。