Подтвердить что ты не робот

Обновление даты в таблице Oracle SQL

Я пытаюсь обновить дату в таблице SQL. Я использую Peoplesoft Oracle. Когда я запускаю этот запрос:

Select ASOFDATE from PASOFDATE;

Я получаю 4/16/2012

Я попытался выполнить этот запрос

UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';

но он не работает.

Кто-нибудь знает, как изменить дату на желаемую?

4b9b3361

Ответ 1

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

Даты, хранящиеся в базе данных, не имеют форматов. Когда вы запрашиваете дату, когда ваш клиент форматирует дату показа, в качестве 4/16/2011. Обычно такой же формат даты используется для выбора и обновления дат, но в этом случае они кажутся разными - поэтому ваш клиент, очевидно, делает что-то более сложное, например, SQL * Plus.

При попытке обновить его, используя модель формата даты . Из-за того, как он отображается, вы предполагаете, что это MM/DD/YYYY, но, похоже, это не так. Вы можете узнать, что это такое, но лучше не полагаться на модели по умолчанию или на любые модели неявного формата.

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

UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');

Поскольку вы не указываете компонент времени - все столбцы Oracle DATE включают время, даже если оно полночь, вы также можете использовать литерал даты:

UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';

Возможно, вам стоит проверить, что текущее значение не включает время, хотя имя столбца не указывает на то, что оно не работает.

Ответ 2

Если этот SQL используется в любом конкретном коде peopleoft (Application Engine, SQLEXEC, SQLfetch и т.д.), вы можете использовать% Datein metaSQL. Peopletools автоматически преобразует дату в формат, который будет принят платформой базы данных, на которой выполняется приложение.

В случае, если этот SQL используется для выполнения обновления базы данных из анализатора запросов (например, SQLDeveloper, SQLTools), используемый формат даты неверен. Oracle ожидает, что формат даты будет DD-MMM-YYYY, где MMM может быть JAN, FEB, MAR и т.д.