OVH Cloud OVH Cloud

type de données "durée"

5 réponses
Avatar
Lionel
bjr,

il n'existe pas de type repr=E9sentant une dur=E9e exprim=E9e=20
en heures, minutes, centi=E8mes de seconde par exemple ...

any suggestion?

thanks

5 réponses

Avatar
Fred BROUARD
float => 1.0 = 24 heures. Du coup:

SELECT CURRENT_TIMESTAMP + 0.5

te donnera toujours la date courante + 12 heures.

Ajoute y des routines de conversion d'heures en caractères claquées sur celles là :
http://sqlpro.developpez.com/cours/sqlserver/udf/
FN_CONVERT_HMS_HD et FN_CONVERT_HD_HMS

A +


Lionel a écrit:
bjr,

il n'existe pas de type représentant une durée exprimée
en heures, minutes, centièmes de seconde par exemple ...

any suggestion?

thanks



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Jean-Nicolas BERGER
Bonjour,
Le type DATETIME fait très bien l'affaire.
Il faut comprendre une date-heure comme la durée écoulée depuis une
date-heure de référence (je ne sais plus quelle est la réf, mais il me
semble que c'est le 1er janvier 1900 à 0h), exprimée en jours.
La partie entière correspond donc au nb de jours écoulés, et la partie
décimale à l'heure.
Une différence entre deux DATETIME est un DATETIME.
Tant pis si on gère de la donnée superflue, mais, à mon avis, le meilleur
moyen pour gérer des heures / minutes / secondes est encore d'utiliser ce
format, sans chercher à construire des usines à gaz.
L'instruction CONVERT nous permet de l'écrire sous la forme que l'on veut,
les DATEADD et autres fonctions similaires nous laissent champ libre pour
les opérations, et si on tient à faire du sophistiqué, il y a toujours les
DATEPART, en gérant avec des CASE ...
JN.


"Lionel" a écrit dans le message de
news: 23fa01c4aefa$b7977530$
bjr,

il n'existe pas de type représentant une durée exprimée
en heures, minutes, centièmes de seconde par exemple ...

any suggestion?

thanks
Avatar
Lionel
Oui, le problème : j'ai besoin de durées en centièmes de secondes ! Ca le fait?

"Jean-Nicolas BERGER" wrote:

Bonjour,
Le type DATETIME fait très bien l'affaire.
Il faut comprendre une date-heure comme la durée écoulée depuis une
date-heure de référence (je ne sais plus quelle est la réf, mais il me
semble que c'est le 1er janvier 1900 à 0h), exprimée en jours.
La partie entière correspond donc au nb de jours écoulés, et la partie
décimale à l'heure.
Une différence entre deux DATETIME est un DATETIME.
Tant pis si on gère de la donnée superflue, mais, à mon avis, le meilleur
moyen pour gérer des heures / minutes / secondes est encore d'utiliser ce
format, sans chercher à construire des usines à gaz.
L'instruction CONVERT nous permet de l'écrire sous la forme que l'on veut,
les DATEADD et autres fonctions similaires nous laissent champ libre pour
les opérations, et si on tient à faire du sophistiqué, il y a toujours les
DATEPART, en gérant avec des CASE ...
JN.


"Lionel" a écrit dans le message de
news: 23fa01c4aefa$b7977530$
bjr,

il n'existe pas de type représentant une durée exprimée
en heures, minutes, centièmes de seconde par exemple ...

any suggestion?

thanks





Avatar
Jean-Nicolas BERGER
La précision d'une variable de type Datetime est de l'ordre de 3
millisecondes.
Ensuite, je t'invite à voir les différentes valeur possibles pour le premier
paramètre de DATEPART, et notamment millisecond.
En plus de tout ça, tu as la fonction DATEDIFF. Attention par contre pour
celle-ci, dont il faut bien comprendre le résultat. Ainsi, une DATEDIFF
portant sur la partie heure entre 1h59 et 2h01 donnera le même résultat
qu'entre 1h01 et 2h59, à savoir 1, le nombre de changements de la partie
heure entre les deux valeur limites.
Et une fois que tu as les millisecondes, tu peux sans difficulté diviser par
10, en arrondissant comme tu le sens.
JN.

"Lionel" a écrit dans le message de news:

Oui, le problème : j'ai besoin de durées en centièmes de secondes ! Ca le
fait?

"Jean-Nicolas BERGER" wrote:

Bonjour,
Le type DATETIME fait très bien l'affaire.
Il faut comprendre une date-heure comme la durée écoulée depuis une
date-heure de référence (je ne sais plus quelle est la réf, mais il me
semble que c'est le 1er janvier 1900 à 0h), exprimée en jours.
La partie entière correspond donc au nb de jours écoulés, et la partie
décimale à l'heure.
Une différence entre deux DATETIME est un DATETIME.
Tant pis si on gère de la donnée superflue, mais, à mon avis, le meilleur
moyen pour gérer des heures / minutes / secondes est encore d'utiliser ce
format, sans chercher à construire des usines à gaz.
L'instruction CONVERT nous permet de l'écrire sous la forme que l'on
veut,
les DATEADD et autres fonctions similaires nous laissent champ libre pour
les opérations, et si on tient à faire du sophistiqué, il y a toujours
les
DATEPART, en gérant avec des CASE ...
JN.


"Lionel" a écrit dans le message de
news: 23fa01c4aefa$b7977530$
bjr,

il n'existe pas de type représentant une durée exprimée
en heures, minutes, centièmes de seconde par exemple ...

any suggestion?

thanks







Avatar
Lionel
merci pour ces renseignements, je vais approfondir.

"Jean-Nicolas BERGER" wrote:

La précision d'une variable de type Datetime est de l'ordre de 3
millisecondes.
Ensuite, je t'invite à voir les différentes valeur possibles pour le premier
paramètre de DATEPART, et notamment millisecond.
En plus de tout ça, tu as la fonction DATEDIFF. Attention par contre pour
celle-ci, dont il faut bien comprendre le résultat. Ainsi, une DATEDIFF
portant sur la partie heure entre 1h59 et 2h01 donnera le même résultat
qu'entre 1h01 et 2h59, à savoir 1, le nombre de changements de la partie
heure entre les deux valeur limites.
Et une fois que tu as les millisecondes, tu peux sans difficulté diviser par
10, en arrondissant comme tu le sens.
JN.

"Lionel" a écrit dans le message de news:

> Oui, le problème : j'ai besoin de durées en centièmes de secondes ! Ca le
> fait?
>
> "Jean-Nicolas BERGER" wrote:
>
>> Bonjour,
>> Le type DATETIME fait très bien l'affaire.
>> Il faut comprendre une date-heure comme la durée écoulée depuis une
>> date-heure de référence (je ne sais plus quelle est la réf, mais il me
>> semble que c'est le 1er janvier 1900 à 0h), exprimée en jours.
>> La partie entière correspond donc au nb de jours écoulés, et la partie
>> décimale à l'heure.
>> Une différence entre deux DATETIME est un DATETIME.
>> Tant pis si on gère de la donnée superflue, mais, à mon avis, le meilleur
>> moyen pour gérer des heures / minutes / secondes est encore d'utiliser ce
>> format, sans chercher à construire des usines à gaz.
>> L'instruction CONVERT nous permet de l'écrire sous la forme que l'on
>> veut,
>> les DATEADD et autres fonctions similaires nous laissent champ libre pour
>> les opérations, et si on tient à faire du sophistiqué, il y a toujours
>> les
>> DATEPART, en gérant avec des CASE ...
>> JN.
>>
>>
>> "Lionel" a écrit dans le message de
>> news: 23fa01c4aefa$b7977530$
>> bjr,
>>
>> il n'existe pas de type représentant une durée exprimée
>> en heures, minutes, centièmes de seconde par exemple ...
>>
>> any suggestion?
>>
>> thanks
>>
>>
>>