我正在写一个查询,该查询将允许我计算需要完成特定作业的日期。将时间值四舍五入到oracle的午夜之前sql
以下是我的工作和代码列表。
JOB_NO | CODES | RCVD_TIME
ABC1 | 1 | 07-JAN-17 09:44:07
DEF2 | 3 | 20-MAR-17 14:32:49
GHI3 | 3 | 27-MAR-17 10:00:03
JKL4 | 1 | 12-JAN-17 12:59:05
现在我有几个条件来锻炼这些工作的结束日期/时间。代码3 - 如果rcvd时间在下午1点之前,那么工作要在同一天完成,直到23点59分59秒,如果rcvd时间是1点或之后工作要在第二天下午1点前完成。
我简单查询:
SELECT
JOB_NO, CODES, RCVD_TIME,
CASE
WHEN CODES = '1'
THEN RCVD_TIME + 1
ELSE RCVD_TIME
END AS TARGET
FROM...
这给了我(不知道如何编写代码3查询):
JOB_NO | CODES | RCVD_TIME | TARGET
ABC1 | 1 | 07-JAN-17 09:44:07 | 08-JAN-17 09:44:07
DEF2 | 3 | 20-MAR-17 14:32:49 | 20-MAR-17 14:32:49
GHI3 | 3 | 27-MAR-17 10:00:03 | 27-MAR-17 10:00:03
JKL4 | 1 | 12-JAN-17 12:59:05 | 13-JAN-17 12:59:05
这是我想什么:
JOB_NO | CODES | RCVD_TIME | TARGET
ABC1 | 1 | 07-JAN-17 09:44:07 | 08-JAN-17 23:59:59
DEF2 | 3 | 20-MAR-17 14:32:49 | 21-MAR-17 13:00:00
GHI3 | 3 | 27-MAR-17 10:00:03 | 27-MAR-17 23:59:59
JKL4 | 1 | 12-JAN-17 12:59:05 | 13-JAN-17 23:59:59
如果有人能就如何获得我所需的答案提出建议,我将非常感激。
在此先感谢。
编辑
有点令人沮丧,但被告知要加一个条件来考虑工作一周中的一天是1和6之间,必须确保在目标时间不落入星期日(天7)。对不起,双倍的人,只是想我会在这里添加它,以防万一错过。
只是可以肯定,'RCVD_TIME'列数据类型的'date'权利,而不是'varchar' ? – Utsav
这是正确的日期数据类型 – user3191160
是否是1和3'CODES'的唯一可能的值?如果其他值可能,“TARGET”是如何计算的? – mathguy