SQL时差存储为hr和mins

时间:2016-02-10 12:31:01

标签: sql jdbc db2

您好我需要在SQL中存储时差 我将使用jdbc和DB2。

e.g。 我有三个表,其中六列是感兴趣的(执行连接后)

  1. ISSUES.STARTTIME
  2. ISSUES.ENDTIME
  3. ISSUES.HOLDSTART
  4. ISSUES.HOLDSTOP
  5. SLA.STATUS
  6. ISSUES.TOTALTIME
  7. 我想从查询中获得的是它应该得到差异(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)
    

    如果我尝试编写伪代码

    1. 如果ISSUES.STARTTIMEISSUES.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'

    2. 如果hold不为null ISSUES.STARTTIME - (ISSUES.HOLDSTART - ISSUES.HOLDSTOP) - ISSUES.ENDTIME < SLARULES.ALLOWEDTIME然后将ISSUES.TOTALTIME设置为x hr:y m:z s和SLA.STATUS = 'GOOD'

    3. 如果ISSUES.STARTTIME, ISSUES.HOLDSTART is not nullISSUES.HOLDSTOP is null ISSUES.STARTTIME - ISSUES.HOLDSTART < SLARULES.ALLOWEDTIME然后将ISSUES.TOTALTIME设置为x hr:y m:z s和SLA.STATUS = 'GOOD'

    4. 如果ISSUES.STARTTIME不为空且ISSUES.HOLDSTART, ISSUES.HOLDSTOP, ISSUES.ENDTIME为空 然后 ISSUES.STARTTIME - currTime < SLARULES.ALLOWEDTIME然后将ISSUES.TOTALTIME设置为x hr:y m:z s和SLA.STATUS = 'GOOD'

    5. 我可以通过Java实现,但只能通过SQL查询吗?

0 个答案:

没有答案