2015-03-10 4 views
1
select replace (SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL,CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result from dual; 

Я хочу изменить CURRENT_TIMESTAMP с «2015-03-10 11:45:15», но оракул дает error.However если убрать оператор выбора, то он работает отлично, я имею в видуКак использовать функцию Repalce изменить строку из запроса в оракула

select replace (TO_CHAR(CURRENT_TIMESTAMP),CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result from dual; 

это работает отлично, но я так долго запросов и CURRENT_TIMESTAMP ближайшие несколько раз, и я хочу, чтобы заменить его с заданной строки

Он работает отлично в MySQL Я хочу это в оракула

ответ

0

Вы должны поставить скобки вокруг подзапроса:

select replace ((SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL),CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result 
from dual; 

Однако это плохо написано. Ваш TO_CHAR(CURRENT_TIMESTAMP) не имеет маски формата, что означает, что преобразование метки времени в строку зависит от ваших настроек nls. Это плохая практика.

Кроме того, CURRENT_TIMESTAMP во втором параметре вашего оператора replace претерпевает неявное преобразование в строку, снова полагаясь на ваши настройки nls.

Если бы я тебя, я бы написать:

select replace ((SELECT TO_CHAR(CURRENT_TIMESTAMP, 'yyyy-mm-dd hh24:mi:ss') FROM DUAL), 
       TO_CHAR(CURRENT_TIMESTAMP, 'yyyy-mm-dd hh24:mi:ss'), 
       '2015-03-10 11:45:15') As result 
from dual; 
+0

В фактическом запросе я дал маску формата, но это только для example.Thanks Boneist для решения – Yogesh

+0

Hi Бон, Что делать, если, если имеется многократное появление строки. Потому что она дает много ошибок значения – Yogesh

+0

Вам нужно будет предоставить дополнительную информацию - например. то, что точно отражает ситуацию, в которой вы находитесь. Поскольку вы ответили на этот вопрос, вероятно, лучше всего начать новый. – Boneist