Incréments de date

La fonction DATESUM calcule une valeur de date ou d'heure à partir d'un nombre spécifié d'unités à partir d'une valeur de date ou d'heure donnée. La forme générale de la fonction est:

DATESUM(datevar, value, "unit", "method").
  • datevar est une variable de format de date / heure (ou une valeur numérique représentant une valeur de date / heure valide).
  • value est un nombre positif ou négatif. Pour les unités de longueur variable (années, trimestres, mois), les valeurs fractionnaires sont tronquées à des entiers.
  • "unit" est l'une des valeurs littérales chaîne suivantes entre guillemets: années, trimestres, mois, semaines, jours, heures, minutes, secondes.
  • "method" est une spécification facultative pour les unités de longueur variable (années, trimestres, mois) placées entre guillemets. La méthode peut être "rollover" ou "closest". La méthode rollover permet d'avancer les jours en excès dans le mois suivant. La méthode la plus proche utilise la date légitime la plus proche dans le mois. Il s'agit de la valeur par défaut.

Exemple

DATA LIST FREE /datevar1 (ADATE10).
BEGIN DATA
2/28/2004
2/29/2004
END DATA.
COMPUTE rollover_year=DATESUM(datevar1, 1, "years", "rollover").
COMPUTE closest_year=DATESUM(datevar1, 1, "years", "closest").
COMPUTE fraction_year=DATESUM(datevar1, 1.5, "years").
FORMATS rollover_year closest_year fraction_year (ADATE10).
SUMMARIZE 
 /TABLES=datevar1 rollover_year closest_year fraction_year
 /FORMAT=VALIDLIST NOCASENUM
 /CELLS=NONE.
Figure 1 : Résultats des calculs de remise à zéro et des années les plus proches
Résultats des calculs de remise à zéro et des années les plus proches
  • Le roulement et les méthodes les plus proches donnent le même résultat lorsqu'on incrémente le 28 février 2004 d'une année: le 28 février 2005.
  • En utilisant la méthode de remise à zéro, l'augmentation d'un an du 29 février 2004 renvoie une valeur du 1er mars 2005. Comme il n'y a pas de date du 29 février 2005, le jour excédentaire est repassé au mois suivant.
  • En utilisant la méthode la plus proche, l'augmentation d'un an du 29 février 2004 renvoie la valeur du 28 février 2005, qui correspond au jour le plus proche du même mois de l'année suivante.
  • Les résultats pour fraction_year sont exactement les mêmes que pour closest_year car la méthode la plus proche est utilisée par défaut et le paramètre de valeur de 1.5 est tronqué à 1 pour les unités de longueur variable.
  • Les trois commandes COMPUTE créent de nouvelles variables qui affichent des valeurs au format F par défaut, qui, pour une valeur de date, est un grand nombre entier. La commande FORMATS spécifie le format ADATE pour les nouvelles variables.

Exemple

DATA LIST FREE /datevar1 (ADATE10).
BEGIN DATA
01/31/2003
01/31/2004
03/31/2004
05/31/2004
END DATA.
COMPUTE rollover_month=DATESUM(datevar1, 1, "months", "rollover").
COMPUTE closest_month=DATESUM(datevar1, 1, "months", "closest").
COMPUTE previous_month_rollover = 
  DATESUM(datevar1, -1, "months", "rollover").
COMPUTE previous_month_closest = 
  DATESUM(datevar1, -1, "months", "closest").
FORMATS rollover_month closest_month 
  previous_month_rollover previous_month_closest (ADATE10).
SUMMARIZE
  /TABLES=datevar1 rollover_month closest_month
   previous_month_rollover previous_month_closest
  /FORMAT=VALIDLIST NOCASENUM
  /CELLS=NONE.
Figure 2. Résultats des calculs mensuels
Résultats des calculs mensuels
  • En utilisant la méthode de la remise à zéro, l'augmentation d'un mois à partir du 31 janvier donne une date en mars, puisque février a un maximum de 29 jours ; et l'augmentation d'un mois à partir du 31 mars et du 31 mai donne le 1er mai et le 1er juillet, respectivement, depuis avril et juin ont chacun seulement 30 jours.
  • A l'aide de la méthode la plus proche, l'incrémentation d'un mois à partir du dernier jour d'un mois donnera toujours la date valide la plus proche dans le mois suivant. Par exemple, dans une année non bissextile, un mois après le 31 janvier est le 28 février et un mois après le 28 février est le 28 mars.
  • A l'aide de la méthode de remise à zéro, la décrémentation d'un mois (en spécifiant un paramètre de valeur négative) à partir du dernier jour d'un mois peut parfois donner des résultats inattendus, car les jours en excès sont rétrogradés au mois d'origine. Par exemple, un mois avant le 31 mars donne le 3 mars pour les années non bissextiles et le 2 mars pour les années bissextiles.
  • A l'aide de la méthode la plus proche, la décrémentation d'un mois à partir du dernier jour du mois donnera toujours la date valide la plus proche du mois précédent. Par exemple, un mois avant le 30 avril correspond au 30 mars (et non au 31 mars), et un mois avant le 31 mars correspond au 28 février dans les années non bissextiles et au 29 février dans les années bissextiles.