1
resposta

Dúvida refente ao mês

Vi que é possível usar tanto os 3 primeiros caracteres do mês quanto o numero referente ao mesmo, entretando, fui fazer uma consulta usando o número e é retornado um erro dizendo: "ERROR at line 1: ORA-01843: not a valid month"

Códigos SQL que funcionam:

SELECT * FROM compras WHERE data BETWEEN '15-NOV-2008' AND '15-NOV-2010';
SELECT * FROM compras WHERE data >= '15-NOV-2008' AND data <= '15-NOV-2010';

Códigos SQL que NÃO funcionam:

SELECT * FROM compras WHERE data BETWEEN '15-11-2008' AND '15-11-2010';
SELECT * FROM compras WHERE data >= '15-11-2008' AND data <= '15-11-2010';

Não entendi. Para fazer a consulta usando o número do mês é preciso criar o registro já seguindo esse padrão?

1 resposta

Oi Augusto, tudo bem? Pelo que entendi, vai da formato do dado mesmo, quando você passa o mês por texto NOV o Oracle consegue entender que no meio vai o mês por causa do padrão, mas quando passa apenas números, ele não sabe ao certo qual dígito se refere a que.

O normal é que os campos do tipo date, armazenem os valores no padrão YYYY-MM-DD Ano, mês e dia. Então a query para funcionar com números precisaria ser assim:

SELECT * FROM compras WHERE data >= '2008-11-15' AND data <= '2010-11-15';

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software