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/ * * * * *
@SQLPRO : ok pour la partie performances mais la subtilité "Intervalle" vs "Durée" m'échappe ...
Je ne comprends pas...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....
Un INTERVAL de la forme '2 hours' ne nécessite aucune date exacte non ?
Posez vous la question pour un intervalle comme '2 month'....
C'est pourquoi on travaille en secondes, minutes, heures, jours, semaines décimales, mais jamais en MOIS, TRIMESTRE, SEMESTRE, ANNEE....
La norme SQL ayant prévu ces types d'intervalles, avant de s'apercevoir que ces derniers ont des durées variables en fonction de la date de départ !
D’ailleurs la norme SQL s'est même tirée une balle dans le pied en disant que les calculs avec une granularité intermédiaire de mois sont interdits... Interdit que brave d'ailleurs PG et qui donc donne des résultats incohérents....
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/ * * * * *
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager