No Oracle, por que esse retorno 01 de março?
-
18-09-2019 - |
Pergunta
No Oracle, este retorna 03/01/2010. Isso não faz sentido para mim. Alguém sabe por quê?
SELECT TO_DATE( '2010' ,'yyyy' ) AS STRANGE_YEAR_RESULT
FROM DUAL
Eu tentei no Oracle 10g e 11g.
Solução
A Oracle precisa de um DateTime completa em seu campo de valor tipo Data, tornando-se assim dar o primeiro dia do atual mês, eu acho, desde que você exigiu nenhuma outra informação do que do ano. Lembre-se que você sempre precisa elenco através TO_DATE () e TO_CHAR () datas em Oracle. Assumindo assim, Oracle "sabe" que você vai obter as informações necessárias.
Outras dicas
Eu não acho que haja qualquer razão sensível, é apenas "o que faz". Também foi discutido na OTN fóruns cerca de um ano atrás.
Não sei, mas meu palpite é que meses são iguais a zero com base, por isso Jan = 0, Mar = 2, etc.
"10" pode ser um problema Y2K na tomada, mas ele está sendo interpretado em 2010.
E se nenhum dia do mês é dado, talvez ele está assumindo o primeiro dia do mês.
Por que testar isso? Você nunca iria querer código desta forma.