2016-11-25 2 views
0

Я хочу вставить Current_timestamp в таблицу Oracle. И я пытался что-то вроде to_timestamp(current_timestamp,'YYYY-MM-DD HH24:MI:SS:FF'), но его дает ошибку какВставка даты и отметки времени с указанием ошибки

ORA-01830: date format picture ends before converting entire input string 
01830. 00000 - "date format picture ends before converting entire input string" 
*Cause:  
*Action: 

Также большое спасибо за ваши ответы, когда я сделал 'select current_timestamp,systimestamp from dual; ", то он дал мне

'CURRENT_TIMESTAMP      
-------------------------------------- 
25-NOV-16 12.03.04.605812000 PM ASIA/C 
ALCUTTA ' whereas when i did -'select systimestamp from dual;' I got 'SYSTIMESTAMP       
-------------------------------------- 
25-NOV-16 06.33.04.789680000 AM +00:00 

.

Теперь я хочу вставить в формате 25-NOV-16 06.33.04.789680000 наряду со многими другими feilds. Просьба помочь.

+2

Какой тип данных является столбцом? Если это 'TIMESTAMP' (и это должно быть), то все, что вам нужно использовать, это' CURRENT_TIMESTAMP'. Также обратите внимание: 'CURRENT_TIMESTAMP' - это метка времени на * клиенте *. В зависимости от ваших требований вы можете вместо этого использовать 'SYSTIMESTAMP', что является меткой времени на * сервере *. –

+1

Проверьте формат 'current_timestamp', выполнив' SELECT current_timestamp FROM dual' ... Я сомневаюсь, что ваша форматная маска правильная. –

+4

*** Никогда ***, _ever_ вызывать 'to_timestamp()' значение, которое уже является меткой времени. Вы просто конвертируете это сначала в varchar, а затем * назад * в метку времени, с которой она должна начинаться. 'timestamp' (и' date') колонки ** не ** имеют «формат». Вы вставляете значение, и вы применяете форматирование их при _displaying_ значение. Поэтому «* Я хочу вставить в формате *» - неправильное предположение. –

ответ

0

Как @Ed Гиббс сказал, что если ваша колонка TIMESTAMP затем просто использовать:

insert into yourtable select current_timestamp from dual; 

Или ваша колонка VARCHAR и хотите изменить формат, то:

insert into yourtable select to_char(current_timestamp, 'YYYY-MM-DD HH12:MI:SS:FF') from dual; 
+0

Привет, Большое спасибо за ваши ответы, когда я сделал «select current_timestamp, systimestamp from dual;» затем он дал мне CURRENT_TIMESTAMP -------------------------------------- 25-NOV- 16 12.03.04.605812000 PM ASIA/C ALCUTTA 'тогда, когда я сделал -' выберите systimestamp из dual; ' Я получил 'SYSTIMESTAMP -------------------------------------- 25-NOV-16 06.33 .04.789680000 AM +00: 00 '. –

+1

@JSapkota, может быть, «ваша машина» неоднозначна, лучше использовать «ваш текущий сеанс». Это может отличаться от часового пояса вашей машины (хотя по умолчанию они одинаковы) –

1

CURRENT_TIMESTAMP возвращает текущую дату и время в часовом поясе сеанса, при значении типа данных TIMESTAMP WITH TIME ZONE.

Если вам нужно значение TIMESTAMP, вы можете сделать CAST(CURRENT_TIMESTAMP AS TIMESTAMP) или даже намного проще, используйте LOCALTIMESTAMP.

В соответствии с вашим обновленным вопросом, похоже, вы хотите вставить время в часовом поясе или на ваш сервер базы данных UTC, а не «Азия/Калькутта».

В этом случае используйте CAST(SYSTIMESTAMP AS TIMESTAMP) или просто SYSTIMESTAMP, Oracle бросит его внутренне.

Смежные вопросы