by Stiod Desenvolvimento Web
Assine nosso RSS

Archive for the 'MySQL' Category

Como rodar um DATEDIFF no Mysql 4.0?

Gabriel Verta
No Gravatar

Estava Rafael Monteiro, que não é o Rafael SDM aqui da Stiod, mas um amigo que trabalha comigo, utilizando a versão 5 do MySQL em um projeto, onde era necessário retornar a diferença entre datas de uma tabela. Até ai tudo bem, ele estava utilizando o datediff, cuja definição da documentação[1] fala:

- "DATEDIFF() retorna o número de dias entre a data inicial expr e a data final expr2. expr e expr2 são expressões de datas ou data e hora. Apenas a parte da data dos valores são usados no cálculo."

Dando como exemplo:

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1

Porém quando chegou na hora de colocar o site em produção no ambiente disponibilizado pelo cliente, tinhamos apenas a versão 4.0 do MySQL, que não suporta o comando DATEDIFF.
Uma alternativa que encontramos para isto foi converter as datas para unix_timestamp e dividir a diferença pelo número segundos de um dia (86400)

select floor((unix_timestamp(data_final) - unix_timestamp(data_inicial)) / 86400) as diferenca from tabela;

É isso ae.. Rafael Monteiro e seus códigos elegantes... xD

[1] http://dev.mysql.com/doc/refman/4.1/pt/date-and-time-functions.html