iDmitriyWinX
@iDmitriyWinX
В чём концепция...?

В каком временном промежутке нужно искать людей, которым сейчас X лет?

У меня небольшие проблемы с представлением данных в голове, по этому пишу сюда.
Как найти всех людей, которым сейчас Х лет? Возраст в базе данных хранится как дата рождения в формате ISO.

Мне нужно составить запрос, чтобы найти всех людей, которым сейчас сколько-то лет, допустим, 16.
Какая нижняя граница даты и какая верхняя?

Можно ли считать нижней границей 1 января 2005 года, или могут существовать люди, которые родились в 2004 году, но им всё ещё 16 лет?

Тогда верхняя граница это 31 декабря 2005 года? или это не охватывает всех возможных шестнадцатилетних? или наоборот, в выдачу попадут ещё и 17-летние?

Тогда получается как-то так:

people.find({
    age: {$gte: new Date(new Date().getFullYear() - age, 0, 1), $lt: new Date(2005, 11, 31)}
})

Голова отказывается работать... Возможно стоит поспать.
  • Вопрос задан
  • 152 просмотра
Решения вопроса 2
hint000
@hint000
у админа три руки
Нижняя граница: (текущая дата - (Х+1) лет + 1 день)
Верхняя граница: (текущая дата - Х лет)
Ответ написан
LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни
Нижняя граница: (текущая дата - Х - 1). Потому что все кто раньше, им уже 17. (Х+1)
Верхняя граница: (текущая дата - Х). Потому что всем кто позже, ещё 15. (Х-1)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы