Итак, у меня есть процедура, которую я сейчас нахожусь в процессе отладки, и я сузил ее до этого оператора выбора.
Примечание: где to_date (''), 3300, 5220 - это представление того, что будет получено из параметра.
SELECT SHIFT_ID_PK, SHIFT_NAME_FK,
SHIFT_START_DAY, SHIFT_START_TIME,
SHIFT_END_DAY, SHIFT_END_TIME,
SITE_ID_FK, SHIFT_DAY_ID,
STARTOFFSET, ENDOFFSET,
TO_TIMESTAMP_TZ((TO_DATE('3/13/2012 7:00 ', 'mm/dd/yyyy HH:MI:SS am') - (3300 / 24 / 60)) + (STARTOFFSET / 24 / 60), 'YYYY-MM-DD HH:MI:SS TZH:TZM') AS SHIFT_START_DATE,
TO_TIMESTAMP_tz((TO_DATE('3/14/2012 1:00 ', 'mm/dd/yyyy HH:MI:SS am') - (5220 / 24 / 60)) + (ENDOFFSET / 24 / 60), 'YYYY-MM-DD HH:MI:SS TZH:TZM') AS SHIFT_END_DATE
from shift_tbl
WHERE
ENDOFFSET >= 3300
AND STARTOFFSET < 5220
order by shift_start_date asc, shift_end_date;
Теперь, что это должно сделать, это взять параметр, который является временной меткой, и вычесть значение смещения.
это значение представляет количество минут, прошедших в течение недели, когда воскресенье в полночь = 0. (Таким образом, если бы это был понедельник в полночь, смещение было бы = 1440).
когда смещение вычитается из параметра, вы получаете начало недели. Затем вы получаете значение смещения из таблицы, которая уже была предварительно определена, и добавляете это значение в начало недели, чтобы получить метку времени.
Это делается для того, чтобы получить дату начала и дату окончания смены.
теперь ниже вы увидите и пример набора результатов, который будет получен из этого:
SHIFT_ID_PK SHIFT_NAME_FK SHIFT_START_DAY SHIFT_START_TIME SHIFT_END_DAY SHIFT_END_TIME SITE_ID_FK SHIFT_DAY_ID STARTOFFSET ENDOFFSET **SHIFT_START_DATE SHIFT_END_DATE**
6146 6206 3 23:00 4 7:00 2450 3 4260 4740 **11-MAR-13 11.00.00.000000000 PM -05:00 11-MAR-14 07.00.00.000000000 PM -05:00**
Теперь моя проблема в том, что мои shift_start_date и shift_end_date имеют одно и то же значение, как и
SHIFT_ID_PK SHIFT_NAME_FK SHIFT_START_DAY SHIFT_START_TIME SHIFT_END_DAY SHIFT_END_TIME SITE_ID_FK SHIFT_DAY_ID STARTOFFSET ENDOFFSET **SHIFT_START_DATE SHIFT_END_DATE**
6146 6206 3 23:00 4 7:00 2450 3 4260 4740 **11-MAR-13 11.56.00.000000000 PM -05:00 11-MAR-13 11.56.00.000000000 PM -05:00**
Значения, помеченные
**.....**
- это значения, о которых я говорю.
Я пробовал несколько разных вещей, чтобы решить эту проблему, однако ничего из того, что я сделал, не сработало, поэтому я полагаю, что мне просто не хватает чего-то очень простого, вызывающего эту проблему.
любая помощь или предложения с благодарностью. Спасибо.