Pergunta

Estou com um problema em relação ao datediff Função MYSQL, posso usá-la e é simples.Mas não entendo como usá-lo para coletar diferenças dentro do campo da tabela.Por exemplo.

Eu tenho uma coluna dob e quero escrever uma consulta que fará algo como

select dateDiff(current_timeStamp,dob) 
from sometable 'here dob is the table column

Quer dizer, quero a diferença da data e hora atual para o campo da tabela dob, cada resultado da consulta é a diferença, a idade do usuário.

Foi útil?

Solução

Você quer dizer assim?

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable

(Fonte)

Outras dicas

Você poderia fazer isso

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) ASeraFROM your_table

Funciona sempre.

Se você quiser, para cada usuário, exiba a idade em anos, faça

select name,extract(year from (from_days(dateDiff(current_timestamp,dob)))) 
       from sometable;

Se eu entendi seus comentários sobre as respostas anteriores, a coluna Data do nascimento não é realmente um DATE valor, mas uma string no formato m/d/y. EU fortemente Recomende que você mude isso; Ele diminui os cálculos de data que você deseja fazer e corre o risco de valores de data inválida sendo inseridos na coluna.

Eu acho que é isso que você precisa. Ele usa o STR_TO_DATE() função e um algoritmo para calcular a idade da documentação do MySQL:

SELECT YEAR(CURDATE()) - YEAR(STR_TO_DATE(dob, '%m/%d/%Y'))
- (RIGHT(CURDATE(), 5) < RIGHT(STR_TO_DATE(dob, '%m/%d/%Y'), 5)) AS age
FROM sometable;

Eu acho que isso deve ajudar

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;

Observação:Forneça o D.O.B no formato correto, por exemplo. YYYY-MM-DD'=> '1991-11-11

Tente isso

SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top