2012-08-04 125 views
0

我正在嘗試獲取事務的已用時間。我需要將它解壓縮到一個文件中。 我發現德比一些SQL在線不行,因爲我想它:derby中兩個日期之間的timestampdiff

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的值相同

我應該如何調整t聲明是否會顯示ts和ts1的值之間的差異?

回答

0

看起來你應該有兩個不同的行:一個是開始行,一個是結束行。每行應該有一個事務ID和一個時間戳,一個應該有一個代碼表明它是開始行,而另一個應該有一個代碼表明它是最後一行。

然後,您可以通過在其事務ID上自行加入表來選擇這兩行,然後您可以從結束時間減去開始時間以獲取流逝的時間。