您好我需要在SQL中存储时差 我将使用jdbc和DB2。
e.g。 我有三个表,其中六列是感兴趣的(执行连接后)
我想从查询中获得的是它应该得到差异(ISSUES.STARTTIME(ISSUES.HOLDSTART - ISSUES.HOLDSTOP) - ISSUES.ENDTIME)并将该差异存储为x hr:xm:zs或作为ISSUES.TOTALTIME字段(例如3.5 = 3小时30米)
我到目前为止所做的是
SELECT ISSUES.ISSUESID, ISSUES.STARTTIME, ISSUES.ENDTIME, ISSUES.HOLDSTART, ISSUES.HOLDSTOP,
SLARULES.ALLOWEDTIME,
(DAYS(ISSUES.ENDTIME) - DAYS(ISSUES.STARTTIME)) * 86400 + (MIDNIGHT_SECONDS(ISSUES.ENDTIME) -
MIDNIGHT_SECONDS(ISSUES.STARTTIME)) as DIFFSECONDSSTARTSTOP
from ISSUES
inner join SLA
on ISSUES.ISSUESID = SLA.ISSUESID
join SLARULES on
(SLARULES.COMPANYNAME = ISSUES.COMPANYNAME and SLARULES.TTSEVERITY = ISSUES.TTSEVERITY)
如果我尝试编写伪代码
如果ISSUES.STARTTIME
和ISSUES.ENDTIME
不为空且ISSUES.HOLDSTART , ISSUES.HOLDSSTOP
为空
ISSUES.STARTTIME - ISSUES.ENDTIME < SLARULES.ALLOWEDTIME
然后将ISSUES.TOTALTIME
设置为x hr:y m:z s(或Duation,例如3.5,3小时30分钟)和SLA.STATUS = 'GOOD'
如果hold不为null
ISSUES.STARTTIME - (ISSUES.HOLDSTART - ISSUES.HOLDSTOP) - ISSUES.ENDTIME < SLARULES.ALLOWEDTIME
然后将ISSUES.TOTALTIME
设置为x hr:y m:z s和SLA.STATUS = 'GOOD'
如果ISSUES.STARTTIME, ISSUES.HOLDSTART is not null
和ISSUES.HOLDSTOP is null
ISSUES.STARTTIME - ISSUES.HOLDSTART < SLARULES.ALLOWEDTIME
然后将ISSUES.TOTALTIME
设置为x hr:y m:z s和SLA.STATUS = 'GOOD'
如果ISSUES.STARTTIME
不为空且ISSUES.HOLDSTART, ISSUES.HOLDSTOP, ISSUES.ENDTIME
为空
然后
ISSUES.STARTTIME - currTime < SLARULES.ALLOWEDTIME
然后将ISSUES.TOTALTIME
设置为x hr:y m:z s和SLA.STATUS = 'GOOD'
我可以通过Java实现,但只能通过SQL查询吗?