调用的是存储过程,输入的开始日期是varchar类型的日期,格式“yyyy-mm-dd hh24:mm:ss”,还有一个小时数hours,每天按工作8小时计算,请问结束日期应该怎么计算啊 

解决方案 »

  1.   


    --此处sysdate只是举例,应是你的开始时间,还有你的时间格式错的,是hh24:mi:ss不是hh24:mm:ss
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') 开始时间
    ,to_char(sysdate+8/24,'yyyy-mm-dd hh24:mi:ss') 结束时间 from dual;
      

  2.   

    每天8个小时,假设每天从8:00到17:00,那么你就要判断hours总共有几个8小时(floor(hours/8)),那么结束日期就暂定为 endDate := to_date(startDate,‘YYYY-MM-DD HH24:MI:SS’)+floor(hours/8)+MOD(hours,8),不过这个时候还要判断结束日期的小时的时间是不是大于17:00,如果大于,那么结束日期还要加上一天