2017-04-18 76 views
0

我有一個字符串格式的日期字段名稱「dts」。我想根據他們的時差(以小時計)找出所有記錄。運行事件時間應該大於或等於吃事件。兩個日期字段之間的時差

enter image description here

輸出應該是:

enter image description here

+0

請提供所需的輸出 – leftjoin

+0

@leftjoin - updated :) – Sarah

回答

1

轉換時間戳來秒鐘,然後減,除結果通過3600拿到小時,用例+計數的範圍內來算,像這:

select count(case when diff_hrs >24 then 1 end) as more_24, 
     count(case when diff_hrs <=24 then 1 end) as less_than_24, 
     ... 
     count(case when diff_hrs >=2 and diff_hrs <=3 then 1 end) as hrs_2_to_3, 
     ... 
from 
(
select 
abs(unix_timestamp(dts) - unix_timestamp(dts-eat)))/60/60 as diff_hrs 
from table 
)s; 
+0

如果其中一個dat e字段是T和Z(2016-05-05T13:37:30Z),另一個沒有(2016-05-06 13:37:30.0)。 unix_timestamp仍然有效嗎? – Sarah

+0

像這樣轉換日期:'from_unixtime(UNIX_TIMESTAMP(「2017-01-01T05:01:10Z」,「yyyy-MM-dd'T'HH:mm:ss'Z'」),「yyyy-MM-dd HH :mm:ss「) return'2017-01-01 05:01:10' – leftjoin

+0

from_unixtime(unix_timestamp(columnname,」yyyy-MM-dd'T'HH:mm:ss'Z'「),」 yyyy-MM-dd HH:mm:ss「) - 這是否會以相同格式返回列中的所有內容? – Sarah