Я создаю систему регистрации ребенка, и мне нужно выяснить, сколько месяцев у детей. Это довольно легко, но я хочу только извлечь детей, которые «месяц рождения».Рассчитать, сколько месяцев в MySQL
Что я подразумеваю под «днем рождения», если они родились 23 ноября, то 23 декабря будет их 1 месяцем рождения. 23 января будет их 2-месячный день рождения. И так далее ...
Теперь мой код ниже говорит мне, сколько месяцев они есть, но не является ли это их «месяцем рождения».
Любые идеи, как я могу заставить это работать?
SELECT PERIOD_DIFF(DATE_FORMAT('2011-11-23', '%Y%m'), DATE_FORMAT(birthday.meta_value, '%Y%m')) AS months
FROM $db->members AS m
JOIN $db->members_meta AS birthday ON birthday.member_id = m.id AND birthday.meta_key = 'birthday' AND birthday.meta_value != ''
WHERE AND m.deleted = 0
GROUP BY m.id
Я думаю, мы должны принять во внимание, если они родились на високосные годы (29 февраля), 30 и 31 месяцев тоже. Я нашел этот код, который работает, чтобы найти thei
(
2012 % 4 <> 0
OR (
2012 % 100 = 0
AND 2012 % 400 <> 0
)
)
AND '11-23' = '03-01' // 11-23 is the current month and day
AND DATE_FORMAT(birthday.meta_value, '%m-%d') = '02-29'
Итак, если бы я был «прыгающим младенцем» и родился 28 февраля, какой будет мой первый «день рождения»? – ninesided
28-е число каждого месяца будет их «месяцем рождения». То же самое с 29-м. Если они родились 30 или 31, то это будет какой бы ни был последний день месяца. Так что в феврале дело было бы 28 или 29. –
Последний последний случай - если я родился 30 декабря (т. Е. Не последний день месяца), какой будет мой «месяц рождения» в феврале? Должен ли я вычитать один день с последнего дня в феврале? – ninesided