quarta-feira, 26 de fevereiro de 2014

Intervalos de datas para coluna do tipo YEAR no MySQL

Olá amigos leitores (se é que alguém lê o que posto)

Estou desenvolvendo uma aplicação que faz um insert em uma coluna do tipo YEAR de uma tabela MySQL. Minha aplicação está correta mas, as vezes notava que para algumas datas o seguinte erro acontecia:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'ano' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

Quando me deparei com esse erro pela primeira vez, fiquei assustado pois, pensei que era algum erro na lógica do meu negócio. Revisei tudo e nada. Então, procurando no google, achei o link abaixo da documentação do MySQL.

http://ftp.nchu.edu.tw/MySQL/doc/refman/4.1/pt/year.html

Não existe nada melhor que a documentação da tecnologia. Logo no início da documentação, está escrito que para o tipo YEAR só são aceitos anos de 1901 - 2155. Logo, descobri a causa dos meus problemas.

Trecho da documentação:
Como um número de 4 dígitos na faixa de 1901 até 2155.

Bem amigos e amigas, espero ter ajudado. Qualquer erro ou melhoria, comentem.
Leia Mais ››