2013-09-18 2 views
0

При импорте столбцов типа "Timestamp" к Oracle DB:Oracle - Отметка

Import tbl: 
02.09.13 00:00:00 

После импорта:

Oracle tbl: 
02.09.13 08:23:44,000000000 

В Oracle TBL типа также является "Отметка". Как удалить ", 000000000"?

+0

Вы не можете удалить его. В типе данных временной метки добавляется часть микросекунд. Если вы действительно хотите изменить его, измените тип данных. Но это нецелесообразно. –

+4

«000000000» вы видите, потому что тип данных временной метки хранит долю секунды до десяти знаков после запятой. Кроме того, это не '02.09.13 08: 23: 44,000000000', это' 02.09.13 08: 23: 44.000000000'. Не беспокойтесь, просто игнорируйте это, поскольку то, что вы видите, - это просто преобразование символов в метку времени. Вы можете удалить '000000000', используя' TO_CHAR (column_name, 'dd.mm.yyyy hh24: mi: ss') '. – Rachcha

+1

OP не видит преобразование символов временной метки @Rachcha; они просто используют DB/session, где NLS_TERRITORY установлен на тот, который использует запятую там в формате даты по умолчанию, например, большую часть Европы. – Ben

ответ

2

Тип данных TIMESTAMP включает в себя дробные секунды; нет способа удалить их в базе данных, сохраняя тип данных. Если вам не нужны дробные секунды, введите дату в столбец DATE.

Не имеет значения, сохранены ли дробные секунды или нет. При выборе из базы данных в нечто иное, чем другой тип данных даты, вы должны отформатировать дату, как требуется клиенту, отображающему его. Обычный способ сделать это можно с помощью функции TO_CHAR(); например:

select to_char(column_name, 'dd.mm.yy hh24:mi:ss') from table_name 

Вы также можете сделать это на уровне сеанса на changing your NLS settings.


Не относится к вашему вопросу, но для того, чтобы оставить комментарий к запятой, являющейся частью вашей метки времени; формат даты по умолчанию определяется NLS_TERRITORY. Запятая - это совершенно допустимый символ, который есть здесь. Изменив NLS_TERRITORY, например, во Францию, он появится как часть NLS_DATE_FORMAT:

SQL> alter session set nls_territory = 'FRANCE'; 

Session altered. 

SQL> select systimestamp from dual 
    2 ; 

SYSTIMESTAMP 
------------------------------------------------------------ 
18/09/13 13:09:54,418387 +01:00 
Смежные вопросы