Вопрос

У меня проблема относительно datediff Функция MYSQL, я могу ее использовать, и это просто.Но я не понимаю, как его использовать для сбора различий в поле таблицы.Например.

у меня есть колонка dob и я хочу написать запрос, который будет делать что-то вроде

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

Я имею в виду, что мне нужна разница между текущей датой и временем поля таблицы. dob, каждый результат запроса представляет собой разницу в возрасте пользователя.

Это было полезно?

Решение

Вы имеете в виду вот так?

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

(Источник)

Другие советы

Ты мог бы сделать это

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) ASвозрастFROM your_table

Работает всегда.

Если вы хотите для каждого пользователя отображать возраст в годах, выполните

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

Если я правильно понимаю ваши комментарии к предыдущим ответам, столбец даты рождения на самом деле не является DATE значение, а не строку в формате m/d/y.я сильно рекомендую вам изменить это;это замедляет любые вычисления дат, которые вы хотите выполнить, и вы рискуете ввести неверные значения даты в столбец.

Я думаю, это то, что вам нужно.Он использует STR_TO_DATE() функция и алгоритм вычисления возраста из документации 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;

Я думаю, это должно помочь

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

Примечание:Укажите дату рождения в правильном формате, например. YYYY-MM-DD'=> '1991-11-11

Попробуй это

SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top