2天之间的总和

时间:2018-01-26 11:23:00

标签: oracle

如何计算2天之间的小时数?

我试过这个:

ABS(TO_DATE(t11.JAM_AKHIR,'HH24:MI:SS') - TO_DATE(t11.JAM_AWAL,'HH24:MI:SS')) * 24 AS SELISIH_JAM,

结果:

| NO| JAM_AWAL    | JAM AKHIR    | SELISIH |
| 1 | 16.30    | 18.30        | 2      |
| 2 | 18.30    | 06.30        | 12      |
| 3 | 18.30    | 08.00        | 10.5      |    (WRONG)

但是,NO 3是错误的。 然后我试了一下:

CASE WHEN TO_DATE(t11.JAM_AWAL,'HH24:MI:SS') < TO_DATE(t11.JAM_AKHIR,'HH24:MI:SS')
     THEN                           
          ABS(TO_DATE(t11.JAM_AKHIR,'HH24:MI:SS') - TO_DATE(t11.JAM_AWAL,'HH24:MI:SS')) *24

     WHEN TO_DATE(t11.JAM_AWAL,'HH24:MI:SS') > TO_DATE(t11.JAM_AKHIR,'HH24:MI:SS')
     THEN                           
          ABS(TO_DATE(t11.JAM_AWAL,'HH24:MI:SS') - TO_DATE(t11.JAM_AKHIR,'HH24:MI:SS')) *24                               
END SELISIH_JAM,

但仍然失败。请帮帮我,谢谢:)

2 个答案:

答案 0 :(得分:1)

我认为你需要在jam_akhir的to_date中添加一天,如果它大于jam_awal,例如:

public class OnSetPropertyListener<DllClass>
{
    public void OnSetProperty(PropertyInfo propertyInfo, DllClass instance) 
    {
        // set another value, for example: "new value"
    }
}

答案 1 :(得分:1)

只是较短的选择; - )

<强> demo

select no, jam_akhir, jam_awal,
       mod (24 *(to_date(jam_akhir, 'hh24:mi') - to_date(jam_awal, 'hh24:mi') ) + 24, 24)
  from t11