Bonjour,
Existe-t-il un format tel que integer, float, date, etc. qui s'applique au temps en sql ? Par exemple comment enregistrer une durée de deux heures 30 ?
Merci pour votre aide.
Bonjour,
Existe-t-il un format tel que integer, float, date, etc. qui s'applique au temps en sql ? Par exemple comment enregistrer une durée de deux heures 30 ?
Merci pour votre aide.
Hello !
Il n'existe pas de type spécial pour les durées.
Vous pouvez mettre 2 champs date : date de début et date de fin
Ou un champ integer qui stock le nombre de seconde de la durée
Le mieux est d'utiliser un FLOAT et de travailler en heure décimale.
Vous devez ensuite ajouter des UDF pour faire la conversion heure décimale vers chaines horaire ([H*]HH:MM:SS.nnn)
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour
Et le format "Interval" de PostgreSQL ?
par exemple :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT NOW() + '2 hours'::interval;
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT NOW() - '2016-01-01 00:00:00'::TIMESTAMP
Effectivement il existe le type interval, en revanche c'est 16 octects alors que quelques octect devrait suffir. Il faudra choisir en fonction des besoins
Le type INTERVAL nécessite des constructions très complexes et littérales pour être manipulé notamment dans les calculs de durées.... Car c'est un intervalle, pas une durée !!!! Nuance subtile, car l'intervalle nécessite une date exacte alors que la durée est relative....
En sus les calculs sur le type intervalle sont généralement peu performant, alors que l'addition ou la soustraction de nombres est la chose la plus rapide qui soit....
Un petit exemple, calcul de la durée moyenne lorsque l'on a que des données sous la forme de type INTERVAL... Vous verrez la différence !
C'est d'ailleurs pour cela que certains SGBDR n'ont jamais implémenté le type INTERVAL et que la dernière norme SQL:2011 utilise le type TIMESTAMP avec deux colonnes début et fin et non le type INTERVAL pour gérer les temporal tables !!!!!
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager