Литерал не соответствует формату строки oracle

Обновлено: 11.07.2024

Просто не уверен почему это продолжает происходить Я сейчас изучаю SQL, я буду благодарен за любую помощь!

Попробуйте заменить строковый литерал на date '1989-12- 09 ' с TO_DATE('1989-12-09','YYYY-MM-DD')

Формат, который вы используете для даты, не соответствует формату даты по умолчанию Oracle.

При установке Oracle Database по умолчанию ФОРМАТ ДАТЫ ПО УМОЛЧАНИЮ устанавливается равным дд-МММ-гггг .

Используйте функцию TO_DATE (dateStr, formatStr) или просто используйте модель формата даты dd-MMM-yyyy .

Формат, который вы используете для даты, не соответствует формату даты по умолчанию Oracle.

При установке Oracle Database по умолчанию ФОРМАТ ДАТЫ ПО УМОЛЧАНИЮ устанавливается равным дд-МММ-гггг .

Используйте функцию TO_DATE (dateStr, formatStr) или просто используйте модель формата даты dd-MMM-yyyy .

Вы также можете изменить формат даты для сеанса. Это полезно, например, в Perl DBI, где функция to_date () недоступна:

Вы также можете навсегда установить nls_date_format по умолчанию:

В Perl DBI вы можете запускать эти команды с помощью метода do ():


Вы также можете изменить ge формат даты для сеанса. Это полезно, например, в Perl DBI, где функция to_date () недоступна:

Вы также можете навсегда установить nls_date_format по умолчанию:

В Perl DBI вы можете запускать эти команды с помощью метода do ():

Это происходит потому, что вы пытались ввести литерал со строкой формата, но длина строки формата не была той же длины, что и литерал.

Вы можете решить эту проблему, выполнив f последующее изменение.

Как правило, если вы используете функцию TO_DATE, функцию TO_TIMESTAMP, функцию TO_CHAR и аналогичные функции, убедитесь, что предоставленный вами литерал соответствует указанной вами строке формата


Это происходит из-за того, что вы пытались ввести литерал со строкой формата, но длина строки форматирования не была такой же, как длина литерала.

Вы можете решить эту проблему, выполнив следующие изменения.

Как правило, если вы используете функцию TO_DATE, функцию TO_TIMESTAMP, функцию TO_CHAR и аналогичные функции, убедитесь, что предоставленный вами литерал соответствует строке формата, вы указали

Если вы предоставите правильный формат даты, он должен работать, проверьте еще раз, если вы указали правильный формат даты во вставленных значениях

Если вы указали правильный формат даты, он должен работать, пожалуйста, проверьте еще раз, если вы указали правильный формат даты во вставленных значениях

попробуйте сохранить дату как это гггг-мм-дд чч: mm: ss.ms, например: 1992-07-01 00: 00: 00.0, что сработало для меня


попробуйте сохранить дату как это гггг-мм-дд чч: мм: сс. ms, например: 1992-07-01 00: 00: 00.0, что сработало для меня

Импортировать внешний обмен

ЦЕЛЬ

В этом документе показана подробная процедура импорта чужих обменные операции.

ПОЧЕМУ ЭТО ВАЖНО?

Функция импорта помогает сохранить времени пользователя, одновременно вводя в систему несколько сделок FX.

ПРОЦЕДУРА

1. На экране запуска Foreign Exchange нажмите New Outright. Отображается новая исходная ставка иностранной валюты.


2 . Щелкните Импорт. Откроется экран импорта валютных сделок.


3 . Щелкните Шаблон, чтобы загрузить шаблон CS Lucas для импорта операций с иностранной валютой. Отобразятся папки компьютера, в которых будет сохранен файл.


4. Щелкните Сохранить. Файл будет сохранен в указанной папке.

5. Откройте файл. Лист Excel будет выглядеть так:


6 . Заполните столбцы. Убедитесь, что все обязательные столбцы заполнены, они отмечены знаком (*). Описание полей см. В руководстве пользователя по созданию FX Outright.


7. По завершении сохраните шаблон Excel.

8. Вернитесь на экран «Импорт валютных сделок», установите флажок перед «Прочитать файл».



12. Нажмите Загрузить, если ошибок нет. Появится всплывающее окно, нажмите OK.



15. Импортированные сделки отобразятся на экране запуска Foreign Exchange.


ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Ошибка недопустимого объекта означает, что то, что было введено в столбец FacilitySN, не соответствует ни одному из коротких имен в системе, или средство не предназначено для транзакции FX. Чтобы проверить, перейдите в «Настройка»> «Средство», чтобы проверить короткое имя и убедиться, что для объекта назначен продукт «Исходящий обмен иностранной валюты». Если нет, может быть создано новое предприятие; см. инструкции в разделе «Как настроить кредитную линию и лимиты».

FAQ02: Что мне вводить для форвардных пунктов, если валютный контракт является спотовой сделкой?

Если форвардные баллы не требуются для транзакции, введите их как 0.

FAQ03: Что такое Ex Rate?

1) Использование устаревшего загрузочного листа.

2) Дополнительные/отсутствующие столбцы в таблице загрузки.

3) Отсутствующий заголовок столбца или имя столбца изменены.

4) В ячейках есть формулы.

5) Чтение не того шаблона. Например, прочтите загрузочный лист MM на экране импорта FX.

Поскольку файл не может быть прочитан из-за формата данных и структуры загруженного листа, система не может показать, какая строка содержит ошибка.

Я продолжаю получать эту ошибку в Oracle, когда пытаюсь запустить этот оператор. Я не уверен, откуда взялась ошибка форматирования. возможно, кто-нибудь со свежим взглядом поможет мне с этой проблемой.

Ошибка, начинающаяся со строки: 1 в команде - Отчет об ошибке - Ошибка SQL: ORA-01861: литерал не соответствует строке формата 01861. 00000 - «Литерал не соответствует строке формата» * Причина: входящие литералы должны иметь ту же длину, что и литералы в строке формата (за исключением начальных пробелов). Если был включен модификатор "FX", литерал должен соответствовать точно, без лишних пробелов. * Действие: Исправьте строку формата, чтобы она соответствовала литералу.

Вот спецификации таблицы, в которую я пытаюсь ВСТАВИТЬ эти данные:

FACNO CHAR (11 БАЙТОВ)
FACFIRSTNAME VARCHAR2 (30 байтов)
FACLASTNAME VARCHAR2 (30 байтов)
FACCITY VARCHAR2 (30 байтов)
СИМВОЛ FACSTATE (2 БАЙТА)
СИМВОЛ FACZIPCODE (10 БАЙТОВ)
СИМВОЛ ФАКРАНКА (4 БАЙТА)
ДАТА ЗАВЕРШЕНИЯ
НОМЕР ФАКСА (10,2)
СИМВОЛ FACSUPERVISOR (11 БАЙТОВ)
СИМВОЛ FACDEPT (6 БАЙТОВ)

3 ответа

Скорее всего, ваш NLS_DATE_FORMAT , формат даты по умолчанию для литералов не соответствует вашей строке. Никогда не предполагайте, что даты имеют тот или иной формат. используйте функцию TO_DATE , чтобы указать формат, поэтому конвертируйте в:

Это происходит потому, что вы пытались ввести литерал со строкой форматирования, но длина строки форматирования не была такой же, как у литерала.

Вы можете решить эту проблему, выполнив следующие изменения.

Как правило, если вы используете функцию TO_DATE, функцию TO_TIMESTAMP, функцию TO_CHAR и аналогичные функции, убедитесь, что предоставленный вами литерал соответствует строке формата, которую вы указали

Ответ старых программистов - правильный ответ. Явное преобразование строки в дату является наиболее безопасным. MS-SQL обычно автоматически преобразует все, что можно узнать как дату, и Oracle сделает это, если ваше форматирование соответствует форматированию по умолчанию для системы. Все системы оракула, с которыми я работал, использовали 'DD / MON / YY' или двухзначный день, трехбуквенное сокращение месяца и двухзначный год по умолчанию и автоматически конвертировали это. Это не лучший способ, но всем иногда нравится лениться.

I am trying to insert data into an existing table and keep receiving an error.

Just not sure why this keeps happening I am learning SQL at the moment, any help will be greatly appreciated!


825 1 1 gold badge 8 8 silver badges 11 11 bronze badges @MikeBurton CREATE TABLE Patient ( PatientNo CHAR(5) NOT NULL PRIMARY KEY, InvoiceNo CHAR(5) NOT NULL, PatientFirstName VARCHAR2(20) NOT NULL, PatientLastName VARCHAR2(20) NOT NULL, PatientStreetAddress VARCHAR2(40) NOT NULL, PatientTown VARCHAR2(20), PatientCounty VARCHAR2(20), PatientPostcode VARCHAR2(8) NOT NULL, DOB DATE NOT NULL, Gender CHAR(1) CONSTRAINT pat_g_nn NOT NULL, PatientHomeTelephoneNumber VARCHAR2(11) CONSTRAINT pat_phtn_nn );

7 Answers 7

Try replacing the string literal for date '1989-12-09' with TO_DATE('1989-12-09','YYYY-MM-DD')


16.9k 14 14 gold badges 44 44 silver badges 50 50 bronze badges

You can also change the date format for the session. This is useful, for example, in Perl DBI, where the to_date() function is not available:

You can permanently set the default nls_date_format as well:

In Perl DBI you can run these commands with the do() method:


The format you use for the date doesn't match to Oracle's default date format.

A default installation of Oracle Database sets the DEFAULT DATE FORMAT to dd-MMM-yyyy .

Either use the function TO_DATE(dateStr, formatStr) or simply use dd-MMM-yyyy date format model.

This happens because you have tried to enter a literal with a format string, but the length of the format string was not the same length as the literal.

You can overcome this issue by carrying out following alteration.

As a general rule, if you are using the TO_DATE function, TO_TIMESTAMP function, TO_CHAR function, and similar functions, make sure that the literal that you provide matches the format string that you've specified

Ошибка SQL: ORA-01861: литерал не соответствует строке формата 01861

[en] ORACLE 12.2 TOP Новые возможности: ФУНКЦИЯ для проверки ДАТАПОВ. До свидания ORA-01861, ORA-01722

Просто не знаю, почему это продолжается. Я изучаю SQL сейчас, любая помощь будет принята с благодарностью!

  • мы можем увидеть структуру вашей таблицы? Я подозреваю, что это номера телефонов VARCHAR2 или что-то в этом роде, и вы вставляете их как NUMBER
  • @MikeBurton CREATE TABLE Patient (PatientNo CHAR (5) NOT NULL PRIMARY KEY, InvoiceNo CHAR (5) NOT NULL, PatientFirstName VARCHAR2 (20) NOT NULL, PatientLastName VARCHAR2 (20) NOT NULL, PatientStreetAddress VARCHAR2, PatientStreetAddress 402 VARCHAR2 (VARCHAR2) (20), PatientCounty VARCHAR2 (20), PatientPostcode VARCHAR2 (8) NOT NULL, DOB DATE NOT NULL, Gender CHAR (1) CONSTRAINT pat_g_nn NOT NULL, PatientHomeTelephoneNumber VARCHAR2 (11) CONSTRAINT pat_phtn_nn);
  • Бьюсь об заклад, это DOB столбец. В этом случае попробуйте использовать TO_DATE функция для анализа строки даты '1989-12-09' должным образом.
  • 1 PatientHomeTelephoneNumber это varchar2, вы вставляете его как NUMBER , он должен быть окружен '' и я не вижу PatientMobileTelephoneNumber в вашем операторе создания.

Попробуйте заменить строковый литерал на дату '1989-12-09' с участием TO_DATE('1989-12-09','YYYY-MM-DD')

Вы также можете изменить формат даты для сеанса. Это полезно, например, в Perl DBI, где функция to_date () недоступна:

Вы также можете навсегда установить значение по умолчанию nls_date_format:

В Perl DBI вы можете запускать эти команды с помощью метода do ():

Формат, который вы используете для даты, не соответствует формату даты по умолчанию Oracle.

При установке Oracle Database по умолчанию для ФОРМАТА ДАТЫ ПО УМОЛЧАНИЮ устанавливается значение dd-MMM-yyyy .

Либо используйте функцию TO_DATE(dateStr, formatStr) или просто используйте dd-MMM-yyyy модель формата даты.

попробуйте сохранить дату, например, yyyy-mm-dd hh: mm: ss.ms, например: 1992-07-01 00: 00: 00.0, что сработало для меня

Это происходит из-за того, что вы пытались ввести литерал со строкой формата, но длина строки форматирования не была такой же, как у литерала.

Вы можете решить эту проблему, выполнив следующие изменения.

Как правило, если вы используете функцию TO_DATE, функцию TO_TIMESTAMP, функцию TO_CHAR и аналогичные функции, убедитесь, что предоставленный вами литерал соответствует указанной вами строке формата.

Если вы указали правильный формат даты, он должен работать, пожалуйста, проверьте еще раз, если вы указали правильный формат даты во вставленных значениях

Hi.i am trying to insert a particular col a_1 from table a to col b_1 of table b.

I am currently using oracle 10g.

The length and datatype of col a_1 is varchar2(5)

The length and datatype of col b_1 is date.

When i am trying to insert

How do i go about it.

Can you give us some sample values from column a_1.

With the present info, you have missed the year format in to_date convertion.

use
Regards,
Prazy

try and identify the columns, which have a space or are of a greater length or do not have a dash
then either correct the data, or modify your sql so that you accomodate multiple formats!

it contains data

user8731258 wrote:
it contains data

user8731258 wrote:
it contains data

Непонятная обработка типа данных

Еще раз здравствуйте.

Ситуация следующая. Выполняю SQL запрос:

То данные 2008го года отбираются.

Что такое с Oracle творится? или скорее я что-то не так творю?


Обработка данных типа запись (комбинированный тип данных).
Вывести ФИО и отметки по физике студентов, имеющих средний балл, больше 4,5. Помоги.

Обработка данных типа запись
Составить программу для решения задачи. Написать программу для ввода списка студентов группы из 25.

7. Обработка данных типа множество
Составить программу для решения задачи. Определить, какие из чисел, введенных с клавиатуры не.


Обработка данных перечисляемого типа
Помогите ,пожалуйста. Требуется: разработать и отладить программу, в которой описана рассмотренная.

Доброго утра!
Поднимаю тему, так как проявились нюансы)

В базе дата хранится в основном в виде dd.mm.yyyy тогда пишу так

Если же дата содержит время 02.02.2011 15:20 то мое условие отваливается, а мне нужно чтоб срабатывало.. Как лучше это сделать? Получать значение преобразовать к строке и если больше 10 символов то обрезать хвост или как?

Добавлено через 28 минут
Вот если на входе у меня дата без времени 02.02.2011 то могу писать так:

у меня не работает! вот почему второй вариант не сработал? в базе хранится 02.02.2011 15:23

у меня ругается) мне нужно чтобы моя гуиподелка работала)

тип поля DATE а содержимое показал уже трижды)

NETClient, хорошая идея. Я добавил в твой запрос to_char(sysdate) и поэкспериментировал с добавлением форматов в функции to_date и to_char. Результат такой: to_char показывает адекватные данные, а вот to_date с форматом не дружит и показывает пустое значение. Видимо, Oracle не предусматривает прямое преобразование из даты в дату с использованием формата, хотя просто to_date дает, собственно говоря, дату (день, месяц и год).

СyberSpec, надо, видимо, для твоей задачи брать либо to_char с ограниченными возможностями сравнения, либо to_date(to_char(с форматом)).

ORA_EXCEL

API Oracle PL/SQL to Excel XSLX Самый мощный PL/SQL Excel API в мире.

Код ошибки базы данных Oracle ORA-01861 Описание

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

  • Qlik Community
  • :
  • Qlik Data Analytics Forums
  • :
  • QlikView
  • :
  • QlikView Scripting
  • :
  • ORA-01861: literal does not match format string
  • Subscribe to RSS Feed
  • Mark Topic as New
  • Mark Topic as Read
  • Float this Topic for Current User
  • Bookmark
  • Subscribe
  • Mute
  • Printer Friendly Page
  • All forum topics
  • Previous Topic
  • Next Topic
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

I am getting error literal does not match format string while executing the below script. I am getting the data from oracle database.

If QVD not exists, it will run without any issue. but for incremental loading i am facing the above issue.

I am using vIncrementalExpression variable to filter for latest records.

IF $(vQvdExists) THEN

LOAD max(TransactionDate) as maxdate

FROM $(vQvdFile) (qvd);

IF IsNull(vMaxdate) then

floor(TRANSACTIONDATE) as TransactionDate,

IF $(vQvdExists) THEN

CONCATENATE ($(vTableName)) LOAD Distinct * FROM $(vQvdFile) (qvd)

  • « Previous Replies
    • 1
    • 2
    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    I got the solution. Actually it is issue with formatting the date. In the where clause it was reading the date as YYYY-MM-DD instead DD-MMM-YY. SO i changed the date format for vLast30day and vReloadTime and finally it is working fine.

    here is the update variable expression.

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    May be check this in Debug option rather full download and highlight that line to troubleshoot. That may help to get into work

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    I think there are some mistakes in SQL statement ( $(vIncrementalExpression))

    Please run in debug mode or check log script, you can see more detail about SQL statement

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    Hi, This is what i see in the debugger.

    ScriptErrorList General Error

    ScriptError General Error

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    I am not able to find any error in the log file.

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    you can using TRACE for output SQL statement ,copy result and run in Oracle Environment

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content
    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content
    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    Could be issue here?

    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Email to a Friend
    • Report Inappropriate Content

    Некоторые ошибки и их устранение

    SP2-1503/SP2-0152

    Windows Server 2003 R2 с установленным на нём Oracle Client 10.2.0.4.
    При запуске sqlplus от имени пользователя с администраторскими полномочиями коннект осуществляется без проблем. Но при попытке подключиться к базе от имени пользователя без администраторских полномочий появляется ошибка:

    Вызвано это невозможностью создать global object пользователем без администраторских полномочий. Я решил проблему так:

    ORA-28759: сбой при открытии файла

    Суть проблемы в том, что Oracle Wallet Manager (OWM) при редактировании wallets меняет разрешения на доступ к файлу. В результате файл становится доступным только пользователю, от которого был запущен OWM.

    Решение:
    Измените разрешения на доступ к файлу так, чтобы пользователь, от которого работает Oracle DB, имел доступ хотя бы на чтение.

    ORA-12154: TNS:could not resolve the connect identifier specified

    PL/SQL Developer и Windows x64.

    sqlplus

    При попытке подключиться с помощью sqlplus, используя Easy Connect, тоже можно получить ошибку:

    Ошибка компиляции при установке Oracle Client

    Первоначально пробуем выполнить:

    Для Ubuntu 14.04 вероятно придётся пересоздать symlink:

    и создать новый:

    и снова пробуем выполнить:

    SQL Developer, Oracle XE и ORA-12705 в Linux

    У меня содержимое файла выглядит так:

    Проблемы с external job (sjsec 6a)

    В какой-то момент стал получать ошибку:

    Это происходило в Oracle, установленном на сервер под управлением Windows.
    Решение — убедитесь и при необходимости запустите сервис OracleJobScheduler .
    Где SID — SID вашего экземпляра БД.

    ORA-01075 you are currently logged on

    Нашёл решение здесь, но решил у себя продублировать. Итак, если при подключении к БД получаем что-то типа:

    нужно выполнить следующие шаги:

    SQLDeveloper из Oracle 11g (64 bit) на Windows (64 bit)

    ORA-00845: MEMORY_TARGET not supported on this system

    На Windows я с такой ошибкой пока не встречался, а на linux решение простое:

    Где:
    size — размер больше или равен объёму выделяемой для всех экземпляров Oracle памяти. В нашем случае он равен 12Gb (size=12g).

    должны получить что-то похожее на следующее:

    Можно смотреть ноту 204127.1 на Metlink.
    В некоторых случаях помогает:

    Проблемы при повторной конфигурации Oracle XE.

    ORA-01704: string literal too long

    Пересоздание сессии в удалённой БД (dblink)

    Разработчики стали жаловаться, что, при обращении к объекту, размещённому в удалённой БД, через database link, появляется следующая ошибка:

    В результате, на требуемом нам сервере будет создана новая сессия. Проблема была решена. Такой вот lifehack.

    К сожалению, воспроизвести ситуацию уже невозможно, но, вероятно, могла помочь и следующая последовательность действий:

    Certificate of the remote server does not match the target address.

    Эта заметка относится к Oracle Database 12.2.
    В wallet-файле есть необходимый сертификат, но при обращении к ресурсу получаем ошибку:

    Ещё один широко известный в узких кругах ресурс:

    ORA-27369: job of type EXECUTABLE failed with exit code: 274662

    ORA-00392: log 1 of thread 1 is being cleared, operation not allowed

    При открытии БД с resetlogs получаем ошибку:

    Читайте также: