Исходя из вашего собственного ответа, я предполагаю, что правильным решением будет одно из следующих:
SELECT TRUNC(SYSDATE) + INTERVAL '14:59:59' HOUR TO SECOND FROM dual;
SELECT TRUNC(SYSDATE) + 14/24 + 59/24/60 + 59/24/60/60 FROM dual;
SYSDATE
- это значение DATE
, вы должны никогда звонить TO_DATE()
на значение, которое уже является DATE
. Неявно Oracle делает это:
SELECT
TO_DATE(''||
TO_CHAR(SYSDATE, SYS_CONTEXT('USERENV', 'NLS_DATE_FORMAT'))
||'' || ' 14:59:59', 'dd-mon-yy hh24:mi:ss')
FROM dual;
Таким образом, результат зависит от текущего сеанса пользователя NLS_DATE_FORMAT
(а в вашем случае также от NLS_DATE_LANGUAGE
), который может измениться в любое время.