Annonce
Les inscriptions sont ouvertes ! L'association GeoRezo sera présente.
#1 Thu 08 January 2026 12:07
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 169
QGIS: Champ format type temps au sens de la duree
Bonjour
Je cherche à créer un champ au format temps, au sens de la durée. Pas un format de type horaire (8h30 le matin ou 18h45 le soir) mais bien 0h30 ou 0h05 au sens temps / durée de déplacement.
J'ai créé un champ de type "Date et heure" (je n'ai pas trouvé d'autre possibilité)
Puis, à l'aide du formulaire d'attributs,
> j'ai décoché "Calendrier" dans le format d'affichage
> j'ai coché "écraser le format du champ" et choisi "temps" dans la liste déroulante. J'ai donc un format HH:mm:ss
Par défaut, lorsque je sélectionne la cellule, l'heure en cours s'affiche. Donc je suppose que j'ai une donnée horaire, donc pas ce que je recherche.
Comment configurer un champ afin de rentrer des données de temps en format heures, mais pas en format texte car je souhaite ensuite les additionner (si cela est possible) avec l'outil "statistiques" comme on peut le faire avec des données de longueur ou d'aire par exemple.
En espérant avoir été clair dans mes explications.
Merci d'avance de votre aide.
Win 11 et QGIS 3.44.9
Hors ligne
#2 Mon 19 January 2026 16:21
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 169
Re: QGIS: Champ format type temps au sens de la duree
Bonjour,
Je me permets de remonter ce post.
Je ne sais pas si mon message est limpide ou incompréhensible, ou est-ce que ce type de format n'est pas possible avec QGIS ?
Merci d'avance, bonne journée
Win 11 et QGIS 3.44.9
Hors ligne
#3 Thu 26 March 2026 01:43
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 49
Re: QGIS: Champ format type temps au sens de la duree
Pour le format "temps" qui n'est pas une date ou le résultat d'un calcul entre deux dates, je ne sais pas si c'est possible.
Solution de contournement pour pouvoir faire des calculs de temps ensuite : enregistrer un champ numérique correspondant à la plus petite unité de temps souhaitée (exemple minutes) puis effectuer des calculs sur cette unité.
Exemple : si dans le champ est enregistrée la valeur 150, ça correspond à 150 minutes puis on fait effectuer un calcul au niveau des étiquettes par exemple (ou autre champ) en convertissant cette valeur par multiple de 60 : 150/60=2,5. On garde la partie entière avec floor() qui nous donne le nombre d'heures. Les minutes restantes correspondent à la valeur de départ moins la valeur du floor(), qu'on multiplie par 60. On fait une concaténation pour rendre ça lisible (ex : 2h30min). La formule finale ressemblerait alors à :
Code:
concat(floor("duréeTotaleEnMinutes"/60),'h',to_int((("duréeTotaleEnMinutes"/60)-floor("duréeTotaleEnMinutes"/60))*60),'min')Les additions de durées seraient faites sur les valeurs brutes des champs puis en appliquant la même conversion expliquée ci-dessus pour afficher un résultat du calcul.
Hors ligne
#4 Thu 26 March 2026 09:06
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 169
Re: QGIS: Champ format type temps au sens de la duree
Bonjour
Merci beaucoup pour cette réponse.
Je vais tester cela. Pas tout de suite, étant pris dans d'autres contraintes, et vous tiens au courant.
Bonne journée
Win 11 et QGIS 3.44.9
Hors ligne
#5 Thu 26 March 2026 11:19
- Benoit D
- Participant assidu
- Date d'inscription: 17 Jul 2018
- Messages: 194
Re: QGIS: Champ format type temps au sens de la duree
Tout dépend de la base sous jacente de vos données, au-delà de la solution de contournement proposée, il serait préférable d'utiliser un type de champ appelé "interval" ou "temps" qui est fait pour cela en PostGreSQL ou ORACLE.
Ce type n'est pas disponible dans les ShapeFile par exemple.
Hors ligne
#6 Tue 21 April 2026 08:51
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 169
Re: QGIS: Champ format type temps au sens de la duree
Bonjour
Merci pour vos retours.
La solution de vxTedxv ne correspond pas vraiment (en tout cas je n'arrive pas à la faire fonctionner) :
J'ai créé un premier champ de type "entier", alimenté en minutes
Puis un second champ de type entier alimenté par la formule ... floor ... mais le résultat ne renvoie rien. Par contre, avec un champ de type texte, la formule donne le bon résultat, mais évidement, je ne peux pas additionner ces durées.
Benoit D, je ne travaille pas en PostGreSQL ou ORACLE, mais avec des couches en gpkg. Si je comprends bien, ce type de champ n'est pas possible avec ce type de couche ?
Bonne journée
Win 11 et QGIS 3.44.9
Hors ligne
#7 Hier 00:31
- Benoit D
- Participant assidu
- Date d'inscription: 17 Jul 2018
- Messages: 194
Re: QGIS: Champ format type temps au sens de la duree
Les bases Geopackage sont basées sur le format SQLite.
Il n’existe pas de data type Interval.
On peut stocker en texte des intervalles comme « 145 minutes » qui peut être directement interprété par les fonctions date/time mais cela risque de ne pas fonctionner avec le module statistique. Dans ce cas je pense que seule la proposition de vxTedxv pourrait répondre au besoin.
Plus d’explications sur votre objectif pourrait nous aider à vous aider ![]()
Hors ligne
#8 Hier 01:49
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 49
Re: QGIS: Champ format type temps au sens de la duree
Testé sur un étiquetage à partir d'un champ texte et d'un champ double : il sera bien évidemment possible d'effectuer des calculs sur les champs de la table, indépendamment du résultat que montre l'étiquette. Pour l'exemple, la valeur des champs est proportionnelle à la longueur de chaque segment.
Hors ligne
#9 Hier 10:21
- Benoit D
- Participant assidu
- Date d'inscription: 17 Jul 2018
- Messages: 194
Re: QGIS: Champ format type temps au sens de la duree
Dans ce cas j'ai plus élégant (il me semble) que la proposition précédente :
Code:
format( '%1h%2mn', "temps"//60 , to_int("temps"%60) )Hors ligne
#10 Hier 14:41
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 169
Re: QGIS: Champ format type temps au sens de la duree
Bonjour
Merci pour votre aide.
La formule marche parfaitement.
Plus d'explications :
J'ai une couche de polylignes (exactement comme le png de VxTedxv) Je cherche
> A afficher les durées de parcours via des étiquttes, vous m'avez donné la solution.
> A additionner deux (ou plus valeurs) de parcours afin d'avoir le résultat en xxhmm. Je souhaite faire cela "rapidement", sans remplir un champ de la couche et je n'ai pas besoin de les afficher sur une carte. Pour cela, je pensais pouvoir utiliser l'outil "panneau statistiques" qui permet d'afficher la somme des entités sélectionnées. Je l'utilise pour additionner les longueurs des polylignes.
J'ai bien pensé à additionner les durées en minutes, puis à les convertir mentalement, mais cela risque d'être une source d'erreur (surtout si on fait ça toute la journée). 145 minutes > 2X60 min = 2h00 +25 min >> 2h25.
Je ne connais pas le type de champ double, qui, si je comprends bien, est un nombre ? Est-ce qu'on peut additionner ces valeurs ? Et si oui, comment fait-on pour créer un champ de ce type ?
Merci d'avance, bonne journée
Dernière modification par jpjp74 (Hier 14:47)
Win 11 et QGIS 3.44.9
Hors ligne
#11 Hier 22:25
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 49
Re: QGIS: Champ format type temps au sens de la duree
merci @Benoit D, c'est en effet tellement mieux ! ![]()
@jpjp74 Le format "double" correspond effectivement à des nombres : pour en savoir plus
Les statistiques sur un champ texte ne pourront pas faire de somme contrairement à champ de nombre. Dans mon exemple, la somme retournera la somme des trois valeurs de ma table (quelle que soit l'unité). Je devrai alors convertir cette somme avec le modèle de formule de conversion donné plus tôt, dans un objet texte dans une mise en page par exemple.
Piste à explorer : vous pourriez utiliser l'outil de création de modèle de traitement pour avoir votre propre traitement dans la boite d'outils de traitement, qui se chargera d'effectuer la somme + la conversion à partir des entités sélectionnées par exemple.
Hors ligne


