1.Introduction
Vous êtes peut-être un peu perdu au niveau des formules qui permettent de manipuler des dates dans Airtable, nous allons parcourir dans cet articles les différentes formules de manipulation de dates disponibles dans Airtable.
2.Formules de dates dans Airtable
DATETIME_PARSE : Convertir une chaîne de caractères en date
Formule : DATETIME_PARSE(Date string, [format], [locale])
Explication : Analyse la chaîne de caractères donnée en paramètre et essaye d’en déterminer une date. Pour « aider » la formule, vous pouvez lui passer le format de votre date ainsi que les paramètres régionaux. (ce dernier paramètres est rarement utilisé). Je liste toutes les balises de format de date disponibles ci-dessous.
Exemple : DATETIME_PARSE(‘2015-07-02’)
DATETIME_FORMAT : Extraire une partie de la date, formater une date
Formule : DATETIME_FORMAT(Datetime, format string)
Explication : Formate une date (un champ de type date) en une chaîne de caractère. Par exemple si vous voulez en extraire seulement une partie; l’année, le mois, le numéro de la semaine, etc. Je liste toutes les balises de format de date disponibles ci-dessous.
Exemple: DATETIME_FORMAT(NOW(), ‘YYYY-MM’)
DATESTR : Afficher une date au format YYYY-MM-DD
Formule : DATESTR(Datetime)
Explication : Formate une date en une chaîne de caractère comme suit : YYYY-MM-DD. Pas spécialement utile en Europe car ce format de date n’est quasiment jamais utilisé. Il s’agit en fait de l’équivalent de DATETIME_FORMAT(Date, « YYYY-MM-DD »)
Exemple : DATESTR(NOW())
DATEADD : Ajouter des minutes, heures, jours, semaines, mois, années à une date
Formule : DATEADD(Datetime, count, unit)
Explication : Je ne sais pas trop comment décrire celle-ci. Ajoute un « nombre » d’une certaine unité à une date. En gros, ajoutez OU retirez des jours, des semaines, des années à une date. Mettez un « – » devant votre chiffre pour décompter. Testé avec « minute », « hour », « day », « week », « month », « year ». (fonctionne aussi au pluriel avec minuteS, weekS, …)
Exemple : DATEADD(Deadline, -2, ‘week’)
DATETIME_DIFF : Calculer la différence entre deux dates
Syntaxe : DATETIME_DIFF(From, To, units)
Explication : Retourne la différence entre deux dates dans l’unité demandée. Testé avec « minute », « hour », « day », « week », « month », « year ». (fonctionne aussi au pluriel avec minuteS, weekS, …)
Exemple : DATETIME_DIFF({Deadline}, TODAY(), ‘weeks’)
3. Balises de Date/Heure pris en charge dans Airtable
Je ne savais pas trop comment appeler cela en français, concrètement, il s’agit des différentes « balises » que vous allez pouvoir utiliser dans vos formatages de dates.
Soit dans DATETIME_PARSE pour préciser à Airtable comment « lire » votre chaîne de caractères représentant une date ou dans DATETIME_FORMAT afin d’exprimer à Airtable comment vous souhaitez formatter votre Date sous forme de chaîne de caractères.
Veuillez noter que les dates sont retournées sous forme de lettres en notation anglo-saxonne. (par exemple avec des : « st », « nd » et « th » en préfixe pour les numérotations ou encore les noms en toute lettre en anglais.)
Ci-dessous, un tableau récapitulatif des différentes balises supportées :
Balises de formatage | Description | Exemple(s) |
M | Mois de l’année, numéroté de 1-12 | 1 2 … 11 12 |
Mo | Mois de l’année, numéroté de 1st-12th | 1st 2nd … 11th 12th |
MM | Mois de l’année, numéroté de 01-12 | 01 02 … 11 12 |
MMM | Nom du mois, abrégé sur 3 lettres | Jan Feb … Nov Dec |
MMMM | Nom du mois | January … December |
Q | Trimestre de l’année, numéroté de 1-4 | 1 2 3 4 |
Qo | Trimestre de l’année, numéroté de 1st-4th | 1st 2nd 3rd 4th |
D | Jour du mois, numéroté de 1-31 | 1 2 … 30 31 |
Do | Jour du mois, numéroté de 1st-31st | 1st 2nd … 30th 31st |
DD | Jour du mois, numéroté de 01-31 | 01 02 … 30 31 |
DDD | Jour de l’année, numéroté de 1-365 | 1 2 … 364 365 |
DDDo | Jour de l’année, numéroté de 1st-365th | 1st 2nd … 364th 365th |
DDDD | Jour de l’année, numéroté de 001-365 | 001 002 … 364 365 |
d | Jour de la semaine, numéroté de 0-6 | 0 1 … 5 6 |
do | Jour de la semaine, numéroté de 0th-6th | 0th 1st … 5th 6th |
dd | Jour de la semaine, abrégé sur deux lettres | Su Mo … Fr Sa |
ddd | Jour de la semaine, abrégé sur 3 lettres | Sun Mon … Fri Sat |
dddd | Jour de la semaine | Sunday … Saturday |
e | Jour de la semaine (Locale) | 0 1 … 5 6 |
E | Jour de la semaine (ISO) | 1 2 … 6 7 |
w | Semaine de l’année, numéroté de 1-53 | 1 2 … 52 53 |
wo | Semaine de l’année, numéroté de 1st-53rd | 1st 2nd … 52nd 53rd |
ww | Semaine de l’année, numéroté de 01-53 | 01 02 … 52 53 |
W | Semaine de l’année (ISO), numéroté de 1-53 | 1 2 … 52 53 |
Wo | Semaine de l’année (ISO), numéroté de 1st-53rd | 1st 2nd … 52nd 53rd |
WW | Semaine de l’année (ISO), numéroté de 01-53 | 01 02 … 52 53 |
YY | Année, sur les deux derniers chiffres | 00 01 … 98 99 |
YYYY | Année | 2000 2001 … 2098 2099 |
gg | Année de la semaine, sur les deux derniers chiffres | 00 01 … 98 99 |
gggg | Année de la semaine | 00 01 … 98 99 |
GG | Année de la semaine (ISO), sur les deux derniers chiffres | 00 01 … 98 99 |
GGGG | Année de la semaine (ISO) | 2000 2001 … 2098 2099 |
A | Avant midi/après-midi (majuscule) | AM PM |
a | Avant midi/après-midi (minuscule) | am pm |
H | Heure exprimée sur une échelle de 0-23 | 0 1 … 22 23 |
HH | Heure exprimée sur une échelle de 00-23, fixé sur 2 caractères (completé par un zéro) | 00 01 … 22 23 |
h | Heure exprimée sur une échelle de 1-12 | 1 2 … 11 12 |
hh | Heure exprimée sur une échelle de 01-12, fixé sur 2 caractères (completé par un zéro) | 01 02 … 11 12 |
m | Minute | 0 1 … 58 59 |
mm | Minute | 00 01 … 58 59 |
s | Seconde | 0 1 … 58 59 |
ss | Seconde | 00 01 … 58 59 |
S | Fraction de seconde | 0 1 … 8 9 |
SS | Fraction de seconde | 00 01 … 98 99 |
SSS | Fraction de seconde | 000 001 … 998 999 |
SSSS … SSSSSSSSS | Fraction de seconde | 000[0..] … 999[0..] |
Z | Fuseau horaire par rapport au GMT, avec un double-point entre heures et minutes. | -07:00 -06:00 … +06:00 +07:00 |
ZZ | Fuseau horaire par rapport au GMT, sans double-point entre heures et minutes. | -0700 -0600 … +0600 +0700 |
X | Timestamp UNIX en secondes | 1360013296 |
x | Timestamp UNIX en millisecondes | 1360013296123 |
LT | Format pré-conçu (raccourci) pour afficher sours la forme h:mm A | 6:30 PM |
LTS | Format pré-conçu (raccourci) pour afficher sours la forme h:mm:ss A | 6:30:45 PM |
L | Format pré-conçu (raccourci) pour afficher sours la forme MM/DD/YYYY | 06/08/2016 |
l | Format pré-conçu (raccourci) pour afficher sours la forme M/D/YYYY | 6/8/2016 |
LL | Format pré-conçu (raccourci) pour afficher sours la forme MMMM D, YYYY | June 8, 2016 |
ll | Format pré-conçu (raccourci) pour afficher sours la forme MMM D, YYYY | Jun 8, 2016 |
LLL | Format pré-conçu (raccourci) pour afficher sours la forme MMMM D, YYYY h:mm A | June 8, 2016 6:30 PM |
lll | Format pré-conçu (raccourci) pour afficher sours la forme MMM D, YYYY h:mm A | Jun 8, 2016 6:30 PM |
LLLL | Format pré-conçu (raccourci) pour afficher sours la forme dddd, MMMM D, YYYY h:mm A | Wednesday, June 8, 2016 6:30 PM |
llll | Format pré-conçu (raccourci) pour afficher sours la forme ddd, MMM D, YYYY h:mm A | Wed, Jun 8, 2016 6:30 PM |
Salut Florian,
déjà merci pour ton blog et surtout tes vidéos Youtube !
Petite question, je souhaite insérer dans un tableau Airtable des dates de façon décroissante comme l’exemple qui suit :
ligne 1 : 09/06/2022
Ligne 2 : 08/06/2022
Ligne 3 : 07/06/2022
Ligne 10000 : etc.
Dans Excel cela correspondrait à la formule : +today() – 1
Mais cela ne marche pas dans Airtable… aurais-tu une idée ?
En te remerciant par avance 🙂
Salut Kilyan,
En effet, dans Airtable, une formule appliquée à une ligne ne peut pas reprendre les données d’autres lignes.
Chaque ligne est totalement indépendante. Une formule une à voir comme un « champ calculé »; qui calcule un résultat sur base des autres colonnes d’une même ligne.
Dans ton cas, il faudrait probablement utiliser un Script ou Make/Integromat/Zapier pour générer tes lignes.
Florian
Bonjour,
vos explications ne répondent pas à ma préoccupation: comment entrer (c’est à dire imposer) une HEURE (de rendez vous, de livraison, de remise de rapport)) dans le champ d’une table en airtable?
le type date ne convient pas puisqu’il affiche un calendrier et non une montre!
quelle est la recommandation du concepteur d’airtable?
Bonjour,
Les champs « Date » permettent d’inclure une heure.
Si vous avez seulement besoin d’un heure, vous pouvez également détourner l’utilisation du champs « Duration ».
Florian
Bonjour,
Merci pour votre article !
J’ai un souci sur une formule de différence entre deux dates :
Je m’explique :
J’ai une date limite (pour la réalisation d’une tâche) et une date réelle (date à laquelle la tâche a été réalisée).
Je souhaite calculer le delta entre ces deux dates, en jours, ce qui fonctionne par parfaitement avec cette formule :
DATETIME_DIFF(
{Date prévue},
{Date réelle},
‘days’
)
Cependant, lorsqu’il n’y a pas de date réelle d’indiquée, la cellule supposée me donner le delta en jours passe en NaN.
Serait il possible d’avoir une formule permettant d’afficher dans le cas ou il n’y aurait pas de date réelle d’indiquée le delta entre la date prévue et TODAY ?
Merci beaucoup pour votre aide !
Bonjour Lars,
Merci pour ton commentaire !
En effet, c’est un problème assez récurrent, en général, je le résous en imbriquant le DATETIME_DIFF dans un IF permettant d’abord de valider que les cellules contiennent les infos nécessaires.
On vérifie d’abord qu’on a à la fois la date réelle et la date prévue.
Si c’est le cas, on exécute datetime_diff.
Pas de « else » (sinon) ici, donc le comportement implicite est de laisser la cellule vide.
Ex :
IF(
AND({Date prévue}, {Date réelle}),
DATETIME_DIFF(
{Date prévue},
{Date réelle},
‘days’
)
)
Bonjour
J’aimerai bien créer une case date et heure de début de tache + case durée prévisionnel et une 3 case date fin prévisionnel comment faire?
Bonjour,
De quelle manière peut-on extraire, sélectionner une date dans une liste de date ?
Exemple : le champs est [22/11/2022, 13/03/2022]
Je ne veux utiliser que la plus récente des dates dans une formule soit avoir que 22/11/2022
Bonjour,
Merci pour votre blog. Je cherche à calculer le nombre de formulaire rempli entre 2 dates. Dans mon formulaire, j’ai une colonne date. Savez-vous comment faire ?
Merci beaucoup
Bonjour,
Je n’arrive pas convertir
une date type : 1675378800000
une heure type : 19267000
une durée type : 21480000
Ces nombres sont extrait d’un export cvs que j’aimerais travailler sur airtable.
Bonjour,
Vous pouvez utiliser 2 méthodes (parfois en combinaison l’une de l’autre) :
– Formule DATETIME_PARSE
– Formule faisant une division / multiplication (ex : 3600 secondes / 60 secondes = 60 minutes)
Si vous avez besoin d’aide pour des imports, nous proposons également ce type de service sous la forme d’un coaching :
https://calendly.com/florianverdonck/support-airtable-1h?back=1&month=2023-02
Florian
Bonjour Florian et merci pour tes vidéos 🙂
Je fais du conseil et je souhaiterais calculer le nbr de jours entre début et fin du projet, mais uniquement les jours de semaine soit 5j par semaine
Est ce possible ? weekdays ne fonctionne pas lol je fais des essais …
Merci
Bonjour Sandrine,
WEEKDAYS devrait fonctionner, sans la formule complète il est difficile pour moi d’aider
Florian
Re-bonjour,
J’ai trouvé la bonne formule :
DATEADD({Date},{Durée} & « », ‘years’).
Merci pour toutes les vidéos, très utiles!
Bonjour,
J’ai un petit blocage sur mon application.
Je propose la réservation de créneaux, avec une date de début, et une date de fin.
J’aimerais utiliser ces dates pour les afficher sur un calendrier.
Cependant, mes événements commencent et se terminent à heure fixe (13h00 pour le début, 12h00 pour la fin).
Pour ne pas que les événements se chevauchent sur le calendrier, j’ai besoin de paramétrer automatiquement une heure fixe, mais une date dynamique (que l’utilisateur choisit).
Je vois que dans Automation, quand un record est créé, on peut mettre à jour ce record, mais la mise à jour du champ se fait sur l’entièreté du champ, je ne peux pas séparer la date (souhaitée dynamique) et l’heure (souhaitée statique).
Auriez-vous une solution s’il vous plaît ? Un grand merci pour votre aide !!
Bonjour Xavier,
Si la date est la seule à être modifiable, pourquoi ne pas :
– créer un champ « date choisie » (type date, sans heure)
– créer un champ « date & heure » (type formule, ou tu ajoute l’heure grace à une combinaison de datetime_parse et datetime_format)
Comme ça ton formulaire affiche seulement la date mais tu dispose d’un champ sur lequel te baser pour avoir la date + l’heure (affichage calendrier etc)
Florian
Bonjour,
Si j’ai une date d’émission de facture dans une colonne. Je veux que la colonne suivante indique la date du paiement dû, soit 30 jours suivant la date d’émission de la facture. Comment faire ?
Bonjour,
La formule serait alors :
DATEADD({Date origine}, 15, « days »)
Florian
très intéressant merci !
à propos de DATEDIFF, j’ai ce soucis : lorsque je tente de calculer une durée entre 2 événements. Les résultats sont faux.
Comme je suspecte un problème de conversion entre formats européens et américains, j’ai essayé :
DATETIME_DIFF(
SET_TIMEZONE(
DATETIME_FORMAT({Date de fin}, ‘YYYY-MM-DDTHH:mm:ssZ’),
‘Europe/Paris’
),
SET_TIMEZONE(
DATETIME_FORMAT({Date de Début}, ‘YYYY-MM-DDTHH:mm:ssZ’),
‘Europe/Paris’
),
‘hours’
)
mais les résultats sont bizarres :
18/9/2023 00:00 – 18/5/2024 23:59 = 1:38
18/9/2023 11:40 – 22/9/2023 11:40 = 0:02
2/10/2023 16:30 – 2/10/2023 17:30 = 0:00
Merci pour votre blog et bonne journée !
Bonjour Benoît
C’est un problème relatif au formatage de votre valeur.
Je vous conseille de changer « duration » en « number » avec une valeur entière.
Cela devrait afficher le nombre d’heures entre les deux dates, ce qui est ce que vous recherchez
Florian