Пытался найти проблему с помощью следующих запросов:
select to_char(datetime,'YYYY') from table;
0031
Я попробовал использовать для столбца типы данных даты и времени.
Я не понимаю, что реальная проблема связана с CSV-файлом или разработчиком SQL. Может кто-нибудь помочь мне, пожалуйста.
09-01-2015 14:30:00+05:30
09-01-2015 14:35:00+05:30
09-01-2015 14:40:00+05:30
09-01-2015 14:45:00+05:30
20-01-09 3:14:30.000000000 PM
20-01-15 3:14:55.000000000 PM
20-01-15 3:15:00.000000000 PM
20-01-15 3:15:05.000000000 PM
3.
SELECT * FROM NLS_SESSION_PARAMETERS WHERE parameter LIKE 'NLS_%_FORMAT';
4. Импортировано с помощью мастера импорта данных введите здесь описание изображения
Решение:
Как решение @MTO https://stackoverflow.com/a/78663198/21575280
Я дал FXDD-MM-YYYY HH24:MI в мастере во время импорта, и это сработало.
Как вы импортировали файл?
Я пробовал использовать оба типа данных: дату и время. Импортируйте данные в SQL-разработчик с помощью Таблицы>mytable(Indices)>импортируйте данные, затем выберите мой файл CSV.
Пожалуйста, отредактируйте вопрос и включите минимальный воспроизводимый пример с: (минимальным) примером CSV-файла, который вы пытаетесь импортировать и в котором возникла эта проблема; подробности процесса, который вы использовали в SQL Developer для импорта файла (особенно то, что вы установили в качестве разделителей столбцов и строк); каков результат SELECT * FROM NLS_SESSION_PARAMETERS WHERE parameter LIKE 'NLS_%_FORMAT'
; и каков ожидаемый результат для этих образцов данных?
Пожалуйста, отредактируйте вопрос, чтобы точно описать, как вы импортировали. В частности, какой «Формат» был выбран на этапе «Определение столбца» мастера импорта.
@MT0 Я отредактировал вопрос. Желаемый формат вывода: 01.09.2015 14:30(ДД-ММ-ГГГГ ЧЧ:МИ:СС).
«Желаемый выходной формат» не связан с исправлением повреждений, которые вы вызываете при импорте в неправильном формате; исправьте это, как показал MT0 (формат FXDD...
работает в мастере импорта), тогда вы сможете форматировать результат запроса данных так, как хотите, изменяя NLS_TIMESTAMP_FORMAT
или используя to_char()
в любом нужном вам формате.
@AlexPoole Привет, я дал FXDD-MM-YYYY HH24:MI в мастере во время импорта, это сработало. Благодарю за ваш ответ.
На вашем изображении видно, что данные имеют формат:
09-01-2015 14:30 09-01-2015 14:35 09-01-2015 14:40 09-01-2015 14:45
а формат целевой таблицы — YYYY-MM-DD HH24:MI:SS
.
Формат не соответствует данным!
Вы можете увидеть, что происходит в SQL-запросе:
SELECT TO_CHAR(
TO_DATE(
'09-01-2015 14:40',
'YYYY-MM-DD HH24:MI:SS'
),
'YYYY-MM-DD HH24:MI:SS'
) AS dt
FROM DUAL;
Тогда результат будет 0009-01-20 15:14:40
и:
(Все неверно, кроме месяца!)
Чтобы решить эту проблему, попробуйте установить целевой формат FXDD-MM-YYYY HH24:MI
. FX
сообщает ему использовать именно этот формат, включая пробелы, дефисы и двоеточия, которые без FX
будут считаться необязательными частями модели формата (вы можете опустить FX
и просто использовать DD-MM-YYYY HH24:MI
, но, как и ваш текущий формат, он, скорее всего, будет разрешающим). принимать значения, которые не имеют точного формата и которые могут вызвать проблемы, и, вероятно, лучше немедленно потерпеть неудачу с сообщением об ошибке, чем обнаружить, что у вас есть данные, которые выглядели нормально, но на самом деле недействительны).
@MTO Я дал FXDD-MM-YYYY HH24:MI во время импорта в мастере данных. Это сработало отлично. Большое спасибо за ваш ответ. Если вы проголосуете против вопроса, пожалуйста, проголосуйте за него.
Как вы импортировали данные, какие у вас были настройки NLS в клиенте при импорте и какой тип данных представляет собой столбец, в который вы импортировали?