Oracle Database 10G Express Edition and Date Formats
Pergunta
Sou novo no Oracle (eu tenho usado o MySQL principalmente até agora), então isso pode ser uma pergunta idiota. Mas eu criei esta tabela (os nomes não são inglês, mas ignore isso, isso não é importante):
CREATE TABLE Auta (
id_auto NUMBER(5) UNIQUE NOT NULL,
typ CHAR(10),
specifikacia_typu CHAR(15),
SPZ CHAR(8),
farba CHAR(20),
datum_vyroby DATE,
pocet_miest NUMBER(2),
pociatok_km NUMBER(6),
poplatok_denny NUMBER(4),
poplatok_km NUMBER(2));
Então eu tentei usar esta consulta de inserção:
INSERT INTO Auta VALUES (
1
,'Audi'
,'A6'
,'KE1-1548'
,'cierna'
,'20-12-2004'
,5
,158749
,1356
,88
);
E eu recebo um erro:
ORA-01843: not a valid month
O formato de data que estou usando é dd-mm-yyyy. Eu também tentei dd.mm.yyyy, dd/mm/yyyy, também tentei alternar o mês e o dia como este - mm -dd -yyyy, mm/dd/yyyy - e ainda o mesmo erro.
O que fazer?
Solução
Substituir:
,'20-12-2004'
...com:
, TO_DATE('20-12-2004', 'DD-MM-YYYY')
Referência: ATÉ A PRESENTE DATA
Outras dicas
O formato da data do Oracle é DD-Mon-yy.
Use o formato de data de 20-april-2004
ao invés de 20-4-2004
.
Usar Dd-mmm-yyyy formato durante a inserção da data no banco de dados.
Por exemplo, 15-Mar-2013
.