Utilisation de valeurs Date, de Date/Heure et d'Heure dans des formules
Les formules de date sont utiles pour gérer des échéances de paiement, des durées de contrat et toutes les fonctionnalités temporelles de votre organisation.
Éditions requises
| Disponible avec : Salesforce Classic et Lightning Experience |
| Disponible avec : Toutes les éditions |
Deux types de données sont utilisés pour travailler avec des dates : Date et Date/heure. Un type de données, Temps, est indépendant de la date de suivi de l'heure, par exemple les heures ouvrables. La plupart des valeurs utilisées pour travailler avec des dates sont de type Date, qui enregistre l'année, le mois et le jour. Certains champs, notamment CreatedDate, sont des champs de Date/heure, ce qui signifie qu'ils n'enregistrent pas seulement une valeur de date, mais également une valeur de temps (enregistrée en heure GMT, mais affichée dans le fuseau horaire de l'utilisateur). La mise en forme des champs Date et Date/heure et Heure dans les rapports et les pages de détail d'enregistrement est déterminée par les paramètres régionaux de l'utilisateur. La précision de la valeur d'un champ Heure est en millisecondes. La précision de la valeur d'un champ Date/Heure est en secondes.
Vous pouvez utiliser des opérations telles que l'addition et la soustraction sur des valeurs Date et Date/heure et Heure afin de calculer une date future ou le temps écoulé entre deux dates ou heures. Si vous soustrayez par exemple une date à une autre, la valeur renvoyée est la différence entre les deux valeurs initiales en jours (type de donnée numérique). La même opération entre deux valeurs de date/heure renvoie une valeur décimale qui indique la différence en nombre de jours, d'heures et de minutes. La même opération entre deux valeurs Temps renvoie milliseconde
Par exemple, si la différence entre deux valeurs de date/heure est de 5,52, cela signifie que les deux valeurs sont séparées de cinq jours, 12 heures (0,5 d'un jour) et 28 minutes (0,02 d'un jour). Vous pouvez également ajouter des valeurs numériques à des dates et dates/heures. Par exemple, l'opération TODAY() + 3 renvoie trois jours après la date du jour. Pour plus d'informations et des exemples d'utilisation de dates, consultez la liste dans Exemples de formules de date.
Dans les exemples, les variables de date et de date/heure sont utilisées à la place des champs ou des valeurs réels de date et de date/heure.
Notez que les fonctions de date complexes produisent une taille de compilation plus importante que celle des fonctions de formule de texte ou numériques, et entraîner ainsi des problèmes de taille de compilation de formule.
TODAY(), NOW() et TIMENOW()
La fonction TODAY() renvoie le jour, le mois et l'année actuels comme type de données Date. Cette fonction est utile pour les formules qui renvoient le nombre de jours écoulés depuis une date antérieure, la date future dans un nombre de jours donné, ou qui affichent la date actuelle.
La fonction NOW() renvoie la valeur de date/heure actuelle. Elle est utile pour les formules qui renvoient des heures du jour spécifiques ainsi qu'une date.
La fonction TIMENOW() renvoie une valeur en GMT qui représente l'heure actuelle sans la date. Utilisez cette fonction au lieu de NOW() pour obtenir l'heure, la minute, les secondes ou les millisecondes actuelles. Cette valeur est utile pour suivre les temps tels que les postes de travail et le délai écoulé.
Pour plus d'informations sur la conversion entre des valeurs de date et de date/heure, reportez-vous à Conversion entre des valeurs de date/heure et de date.
Fonction DATE()
La fonction DATE() renvoie la valeur de date d'une année, d'un mois et d'un jour donné. Les valeurs numériques A/M/J et les fonctions YEAR(), MONTH() et DAY() sont des paramètres valides pour DATE(). Par exemple, DATE( 2013, 6, 1 ) renvoie le 1er juin 2013. De la même façon, DATE( YEAR( TODAY() ), MONTH( TODAY() ) + 3, 1) renvoie la valeur Date du premier jour trois mois à compter du jour de l'année en cours, en considérant que la date est valide (par exemple, le mois est compris entre 1 et 12).
Si les valeurs A/M/J saisies génèrent une date non valide, la fonction DATE() renvoie une erreur. Par conséquent, la vérification des erreurs est une part importante de l'utilisation de valeurs de date. Pour plus d'informations sur les méthodes de traitement des dates non valides, consultez Exemples de formules de date.
Conversion entre date/heure et date
Les types de données Date et Date/heure ne sont pas interchangeables. Lorsque vous exécutez des opérations entre des valeurs de date et de date/heure, vous devez les convertir afin d'utiliser des valeurs de même type. Certaines fonctions (telles que YEAR(), MONTH() et DAY()) fonctionnent uniquement sur des valeurs de date, et nécessitent par conséquent la conversion préalable des valeurs de Date/heure.
Utilisez la fonction DATEVALUE( date/time
) pour renvoyer la valeur Date d'une Date/heure. Par exemple, pour obtenir l'année à partir d'une Date/heure, utilisez YEAR( DATEVALUE(
date/time ) ) ).
Si une formule référence un champ de date/heure, mais renvoie une date, le composant Heure est ignoré sans conversion vers le fuseau horaire de l'utilisateur. Ce comportement peut entraîner une date incorrecte. Pour corriger le fuseau horaire de l'utilisateur, utilisez la fonction DATEVALUE() pour convertir le champ Date/heure.
Vous pouvez convertir une valeur Date en Date/heure à l'aide de la fonction DATETIMEVALUE( date ) . L'heure est définie sur 00:00 en heure GMT, puis convertie dans le fuseau horaire de l'utilisateur qui affiche l'enregistrement. Pour un utilisateur situé à San Francisco, DATETIMEVALUE( TODAY() ) renvoie 17:00 le jour précédent (pendant l'heure d'été) au lieu de 00:00 le jour GMT actuel. Pour plus d'informations, reportez-vous à Note sur la valeur de date/heure et les fuseaux horaires.
Conversion entre Date/heure et Heure
La fonction TIMEVALUE() renvoie un type de valeur de données Heure sous le format « HH:MM:SS.MS » (heures:minutes:secondes.millisecondes) de 24 heures. Les valeurs numériques H/M/S/MS et les fonctions HOUR(), MINUTE(), SECONDS() et MILLISECONDS() sont des paramètres valides pour la TIMEVALUE().
Utilisez la fonction TIMEVALUE(value) pour renvoyer la valeur Heure de type Date/heure, texte, champ de fusion ou expression. Par exemple, vous pouvez extraire le temps d'une valeur de Date/heure ClosedDate avec TIMEVALUE(ClosedDate).
Conversion entre date et texte
Pour inclure une date dans une chaîne, incorporez la valeur de date dans la fonction TEXT() afin de la convertir en texte. Par exemple, pour renvoyer la date du jour au format texte, utilisez :
"Today's date is " & TEXT( TODAY() )La date est renvoyée sous le format « AAAA-MM-JJ », pas sous le format correspondant aux paramètres régionaux. Vous pouvez modifier le format en extrayant d'abord le jour, le mois et l'année de la date, puis en les combinant sous le format voulu. Par exemple :
"Today's date is " & TEXT( MONTH( date ) ) & "/" & TEXT( DAY( date ) ) & "/" & TEXT( YEAR( date ) ) ) Vous pouvez également convertir un texte en date afin d'utiliser la valeur de chaîne avec vos autres champs et formules de date. Si vous souhaitez mettre votre texte en forme sous « AAAA-MM-JJ », utilisez la formule suivante pour renvoyer la valeur de date :
DATEVALUE( "YYYY-MM-DD" )Conversion entre date/heure et texte
Vous pouvez inclure des valeurs de date/heure dans une chaîne à l'aide de la fonction TEXT(), mais en tenant compte des fuseaux horaires. Par exemple, prenons la formule :
"The current date and time is " & TEXT( NOW() )Dans cette formule, NOW() est défini sur l'heure GMT. Normalement, NOW() est converti dans le fuseau horaire de l'utilisateur lors de l'affichage. Cependant, comme il a été converti en texte, aucune conversion n'a lieu. Si vous exécutez cette formule le 2 août 2013 à 01:00 heure de Paris (GMT+1), le résultat est « The current date and time is 2013–08–02 00:00:00Z ».
Lorsque vous convertissez une date/heure en texte, un suffixe « Z » est ajouté pour indiquer l'heure GMT. TEXT( date/time ) renvoie « Z » si le champ est vide. Par conséquent, vérifiez si la valeur de Date/heure avec laquelle vous travaillez peut être vide avant la conversion en texte :
IF(
ISBLANK( date/time ),
"",
TEXT( date/time )
)Pour convertir une chaîne en valeur de Date/heure, utilisez DATETIMEVALUE() en transmettant une chaîne sous le format « AAAA-MM-JJ HH:MM:SS ». Cette méthode renvoie la valeur de date/heure en heure GMT.
Conversion entre Heure et Texte
Pour inclure l'heure dans une chaîne, incorporez la valeur de temps dans la fonction TEXT() afin de la convertir en texte. Par exemple, pour renvoyer l'heure actuelle au format texte, utilisez :
"The time is " & TEXT( TIMENOW() )Cette fonction renvoie l'heure sous le format « HH:MM:SS.MS ».
Vous pouvez également convertir un texte en type de données Heure afin d'utiliser la valeur de chaîne avec vos autres champs et formules Heure. Mettez en forme votre texte sous le format « HH:MM:SS.MS » de 24 heures. Utilisez la fonction TIMEVALUE() :
TIMEVALUE("17:30:45.125")Note sur la valeur de date/heure et les fuseaux horaires
Les valeurs de date et de date/heure sont enregistrées en heure GMT. Lors de la sauvegarde d'un enregistrement, les valeurs de champ dans le fuseau horaire de l'utilisateur sont converties en heure GMT, puis reconverties dans le fuseau horaire de l'utilisateur qui affiche les pages de détail de l'enregistrement et les rapports. Avec les conversions de date, cela ne pose aucun problème, car la conversion d'une date/heure en date génère une valeur de date identique.
Cependant, lors de l'utilisation de champs et de valeurs de date/heure, la conversion est toujours effectuée en heure GMT, pas dans le fuseau horaire de l'utilisateur. La soustraction d'un champ de date/heure standard à un autre ne pose aucun problème, car les deux champs sont dans le même fuseau horaire. Cependant, lorsque l'une des valeurs du calcul est une conversion d'une valeur de texte ou de date vers une valeur de date/heure, les résultats sont différents.
Supposons qu'un utilisateur à San Francisco saisisse la valeur 00:00 le 2 août 2013 dans un champ de date/heure personnalisé appelé Date_Time_c. Cette valeur est enregistrée sous 2013–08–02 07:00:00Z, car la différence avec l'heure d'été du Pacifique est GMT-7. À 12h00 le 1er août PDT (heure du Pacifique), l'utilisateur affiche l'enregistrement et la formule suivante est exécutée :
Date_Time_c - NOW()Dans le calcul, NOW() correspond à 2013–08–01 19:00:00Z, qui est soustrait de 2013–08–02 07:00:00Z, pour renvoyer le résultat prévu de 0,5 (soit 12 heures).
Supposons qu'à la place de NOW(), la formule convertisse la chaîne « 2013–08–01 12:00:00 » en une valeur de Date/heure :
Date_Time_c - DATETIMEVALUE( "2013-08-01 12:00:00" )Dans ce cas, DATETIMEVALUE(
“2013–08–01 12:00:00” ) correspond à 2013–08–01 12:00:00Z, et renvoie le résultat 0,79167, soit 19 heures.
Il n'est pas possible de déterminer le fuseau horaire d'un utilisateur dans une formule. Si tous vos utilisateurs travaillent sous le même fuseau horaire, vous pouvez ajuster l'écart du fuseau horaire en ajoutant ou en soustrayant la différence d'heure entre le fuseau horaire des utilisateurs et l'heure GMT dans vos valeurs converties. Cependant, les fuseaux horaires peuvent être affectés par l'heure d'été, et les dates de début et de fin d'heure d'été changent chaque année. Par conséquent, il est difficile de gérer les fuseaux horaires dans une formule. Nous recommandons d'utiliser un code Apex pour les transactions qui nécessitent une conversion de valeurs de date/heure en valeurs de texte ou de date.

