J'ai deux tables:Comment obtenir Nombre de mois et Jours De deux dates
AgeMilestones //Represents available timespans
Id int
Description varchar //(newborn, 1 month old, 2 month old, etc.)
NbrMonths int //(0, 1, 2, etc.)
NbrDays int //(0, 1, 2, etc.)
Child
Id int
DateOfBirth DateTime
Je dois obtenir les AgeMilestones qu'un enfant donné a actuellement passé l'âge. Le problème est qu'un vrai mois peut avoir 28 jours, 30 jours ou 31 jours. Donc, si je convertis NbrMonths en jours, je peux parfois être absent de quelques jours.
Existe-t-il un autre moyen de faire cela qui serait plus précis en utilisant la structure de table existante?
EDIT:
Je dois comprendre ce que agemilesstone correspond au nombre de mois/jours qui existent dans le temps entre l'enfant est né et aujourd'hui (quelque chose de similaire à ci-dessous). Je reçois trébuché dans les cas où une étape d'âge peut être 3 mois et 15 jours, ou 5 mois et 7 jours ...
SET @Days = DateDiff(d,child.DateOfBirth, GetDate())
SET @Months = DateDiff(m,child.DateOfBirth, GetDate())
SELECT * FROM AgeMileStone WHERE NbrMonths < @Months AND NbrDays < @Days
problème avec des disques comme
AgeMilestone:
Id: 4
description: "5 et 1/2 mois"
mois: 5
Jours: 15
Ne pas oublier qu'un mois peut avoir 29 jours aussi. Pas très souvent, mais ça arrive. J'ai entendu dire que des bébés pouvaient naître ce jour-là, mais je n'en ai pas la preuve. –
Vous le savez déjà, je ne reçois pas votre question mise à jour. –
Je suppose que je sais de quoi vous parlez ... Vous voulez dire que NbrDays sont en réalité des jours compensés, pas des jours totaux depuis la date de naissance, n'est-ce pas? –