2014-11-25 65 views
0

當我執行如何減去與納米第二數據同一組內的

SELECT * FROM TABLE_A 

它給我的數據下兩列TIMEOrder_Number

====    ==== 
TIME    Order_Number 
====    ==== 
100622.383   1202 
100622.524   1202 
100623.165   1202 
100623.165   1202 

我想出去的是什麼查詢是找到MAX(TIME)MIN(TIME)之間的差異,這將是100623.165 - 100622.383

所以我試過這是,

SELECT MAX (TIME) - MIN (TIME) AS TIME_RESULT 
FROM TABLE_A 
WHERE ORDER_NUMBER='1202' 

但問題是,在TIME列中的點使它成爲varchar類型,所以它不會減少。TIME formart是小時分秒。納秒。

任何人都可以幫我減去包含納秒的時間嗎?

+1

請用您正在使用的數據庫標記您的問題。 – 2014-11-25 01:58:47

回答

1

推測,格式是小時分秒秒。微秒更小。再小一些的納秒。

如果這些是時間的表示,作爲字符串,那麼你可以將它們轉換爲本地時間數據類型。這取決於數據庫。您也可以將它們轉換成秒,儘管有大量的字符串操作:

select max(time_in_secs) - min(time_in_secs) as span_in_secs 
from (select a.*, 
      (cast(left(time, 2) as decimal(10, 3))*60*60 + 
       cast(substring(time, 3, 2) as decimal(10, 3))*60 + 
       cast(right(time, 6) as decimal(10, 3)) 
      ) as time_in_secs 
     from table_a a 
     where order_number = '1202' 
    ) t; 

的特定功能的操作字符串可以依賴的數據庫(如substr()而非substring())。但同樣的邏輯(即使功能略有不同)也可以應用於任何數據庫。

+0

哦,我知道了!謝謝!!!!!!!! :-) – user2526844 2014-11-25 02:18:39