表 DB2
ID HOURS HOURSMINUTES
1000 480.5 30:30:00
HOURS - HOURSMINUTES を取得したい
ID HOURS - HOURSMINUTES
1000 450.0
HOURS は HOURS 単位の float 値です。つまり 480.5 時間です。HOURSMINUTES は文字列値: 30:30:00 (30 時間 30 分 00 秒)
減算する方法は?
2 つのテーブルから値を取得しているため、これは完全な式です (この形式で値を取得しますが、減算することはできません)。2 つのタイムスタンプ形式からの減算として、既に HOURS を取得しています。結果は float です。累積時間は文字列値です。
select t1.id,
dec (( timestampdiff(
4,
char(t1.actualfinish - t1.reportdate))/60.00),10,2) as HOURS,t2.cumulativetime as HOURSMINUTES
from t1
join t2 on t2.id=t1.id
以下にソリューションを挿入しようとすると、エラーが発生します。
select t1.id,
dec (( timestampdiff(
4,
char(t1.actualfinish - t1.reportdate))/60.00),10,2) as HOURS,t2.cumulativetime as HOURSMINUTES,
dec (( timestampdiff(
4,
char(t1.actualfinish - t1.reportdate))/60.00),10,2)- cast(substr(t2.cumulativetime, 1, 2) as int) -
(cast(substr(t2.cumulativetime, 4, 2) as int) / 60.0) as diff
from t1
join t2 on t2.id=t1.id
Kapilバージョンも試しました:
select t1.id,
dec (( timestampdiff(
4,
char(t1.actualfinish - t1.reportdate))/60.00),10,2) as HOURS,t2.cumulativetime as HOURSMINUTES,
(dec (( timestampdiff(
4,
char(t1.actualfinish - t1.reportdate))/60.00),10,2) - (CAST(substr(t2.cumulativetime , 1, 2) AS float) + CAST(substr(t2.cumulativetime , 4, 2) AS float)/60 + CAST(substr(t2.cumulativetime , 7, 2) AS float)/3600)) as diff
from t1
join t2 on t2.id=t1.id