Методы расчета возраста по дате в MySQL: DATEDIFF, TIMESTAMPDIFF и другие.

Чтобы получить возраст по дате в MySQL, вы можете использовать различные методы. Вот несколько подходов:

  1. Функция DATEDIFF:
    Вы можете использовать функцию DATEDIFF для вычисления разницы между заданной датой и текущей датой. Предположим, у вас есть столбец с именем «дата рождения» в таблице «пользователи», для получения возраста можно использовать следующий запрос:

    SELECT DATEDIFF(CURDATE(), birthdate) / 365 AS age FROM users;
  2. Функция TIMESTAMPDIFF:
    Функция TIMESTAMPDIFF также может использоваться для расчета возраста. Он вычисляет разницу между двумя датами в указанной единице измерения. Вот пример:

    SELECT TIMESTAMPDIFF(YEAR, birthdate, CURDATE()) AS age FROM users;
  3. Функция ГОД:
    Если вам нужен только год компонента возраста, вы можете использовать функцию ГОД. Вот пример:

    SELECT YEAR(CURDATE()) - YEAR(birthdate) AS age FROM users;
  4. Использование DATE_FORMAT.
    Другой подход — использовать функцию DATE_FORMAT для извлечения года из даты рождения и последующего расчета возраста. Вот пример:

    SELECT YEAR(CURDATE()) - YEAR(DATE_FORMAT(birthdate, '%Y-%m-%d')) AS age FROM users;
  5. Пользовательская функция:
    При желании вы можете создать пользовательскую функцию для расчета возраста. Вот пример создания функции с именем «getAge»:

    DELIMITER //
    CREATE FUNCTION getAge(birthdate DATE)
    RETURNS INT DETERMINISTIC
    BEGIN
       DECLARE age INT;
       SET age = YEAR(CURDATE()) - YEAR(birthdate);
       IF DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(birthdate, '%m%d') THEN
           SET age = age - 1;
       END IF;
       RETURN age;
    END//
    DELIMITER ;
    -- Example usage:
    SELECT getAge(birthdate) AS age FROM users;