ORA-01855: требуется AM/AM или PM/PM
Я получаю ошибку: ORA-01855: AM/A.M. or PM/P.M. required
когда я пытаюсь выполнить следующий запрос.
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI AM'))
Где моя START_DATE
столбец имеет тип "Дата".
Я выполнил следующий запрос, и он не дал ошибок, но все еще не увенчался успехом в вышеуказанном выпуске:
ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY HH:MI AM";
2 ответа
Решение
Ваша маска формата должна соответствовать формату строки, которую вы конвертируете. Так что вы бы хотели добавить SS
в маску формата или уберите секунды из строки
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'))
или же
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22 AM', 'MM/DD/YYYY HH:MI:SS AM'))
Если вы хотите принять строку, содержащую секунды, но не хотите хранить секунды в базе данных (в этом случае Oracle всегда будет хранить 0 для секунд), вы можете использовать TRUNC
функция
INSERT INTO TBL(ID,START_DATE)
values (123, TRUNC( TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 'MI') )
Я получил ту же ошибку при запуске конструктора форм, она была исправлена путем изменения Filed DataType с TIME на CHAR.