powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / определить полное количество лет через дату рождения
9 сообщений из 9, страница 1 из 1
определить полное количество лет через дату рождения
    #36006455
Феодал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет

как правильно ( с учетом месяцев и дней ) вычислить полное количество лет человека по имеющейся дате рождения?

т.е есть поле типа DATE в котором хранится дата рождения ... надо получить количество полных лет человека.

Всем заранее спасибо!
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006477
Little John
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем точно так:
Код: plaintext
select floor(datediff(curdate(), '1971-07-23') /  365 );

А точно, учитывая високосные годы... Боюсь, придется мучиться с календарями.
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006522
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT YEAR(CURDATE())-YEAR(myfiled)-(( 100 *MONTH(myfiled)+DAYOFMONTH(myfiled))>( 100 *MONTH(CURDATE())+DAYOFMONTH(CURDATE()))
проще что-то не получается...
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006571
lonely.k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
SELECT 
    YEAR(FROM_DAYS(DATEDIFF(CURDATE(), '2008-01-01')))
    , YEAR(CURDATE() - INTERVAL TO_DAYS('2008-01-01') DAY)
но в это случае разницы в датах менее 1 года будут сводиться к 0000-00-00 и не получится вычленить дни и месяцы, для дат с разницей более одного года такой проблемы нет
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006574
lonely.k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот это вроде работает и для дат с разницей менее 1 года
Код: plaintext
SELECT YEAR(MAKEDATE( 0 , DATEDIFF(CURDATE(), '2009-01-01')) - INTERVAL  2000  YEAR)
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006577
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может понагляднее через DAYofYEAR
Код: plaintext
1.
select (YEAR(current_date())-YEAR('1910-10-10')) - 
          if(DAYOFYEAR(current_date())>DAYOFYEAR('1910-10-10'), 0 , 1 ) as full_year;
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #36006773
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinovможет понагляднее через DAYofYEAR
Код: plaintext
1.
select (YEAR(current_date())-YEAR('1910-10-10')) - 
          if(DAYOFYEAR(current_date())>DAYOFYEAR('1910-10-10'), 0 , 1 ) as full_year;
задача-то нетривиальная
1960-02-29 - (ДР в високосный год) при проверке на 1 марта даст полный год. Да вообще будет сбоить с учетом високосного года рождения и обычного года проверки (и наоборот)
самое надежное проверить и День и Месяц
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
определить полное количество лет через дату рождения
    #38378238
Lisa90210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT

IF(DAY(CURDATE()) - DAY('1990-09-09') < 0,
DAY(CURDATE()) - DAY('1990-09-09')+ DAY(LAST_DAY(CURDATE())),
DAY(CURDATE()) - DAY('1990-09-09')) AS full_day

, IF(MONTH(CURDATE()) - MONTH('1990-09-09') < 0,
MONTH(CURDATE()) - MONTH('1990-09-09')+12,
MONTH(CURDATE()) - MONTH('1990-09-09')) AS full_month

, (YEAR(current_date())-YEAR('1990-09-09')) -
if(DAYOFYEAR(current_date()) > DAYOFYEAR('1990-09-09'),0,1) AS full_year
...
Рейтинг: 0 / 0
определить полное количество лет через дату рождения
    #38378581
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для MS SQL:
Код: sql
1.
2.
3.
SET @full_years=
   YEAR(@TO)-YEAR(@FROM)
   +sign(sign((MONTH(@TO)-MONTH(@FROM))*100+DAY(@TO)-DAY(@FROM))+1)-1

Вероятно, для MySQL тоже сойдет:)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / определить полное количество лет через дату рождения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]