OVH Cloud OVH Cloud

manipulation de dates

12 réponses
Avatar
jack
Bonjour,

J'ai du perdre un peu la notion du temps...

Je récupère une date (en VB).
A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être en fin
de journée.
Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes je
change de jour.

Que se passe-t-il ?

Merci

declare @myDate smalldatetime
set @mydate='26/05/2005'
set @mydate=dateadd(hour,23,@mydate)

set @mydate=dateadd(mi,59,@mydate)
set @mydate=dateadd(s,59,@mydate)

print @myDate

10 réponses

1 2
Avatar
Thierry
Bonjour,

Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
23h59mn30s (J) -> 0h0mn0s (J+1)

--
Thierry


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

Bonjour,

J'ai du perdre un peu la notion du temps...

Je récupère une date (en VB).
A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être en
fin
de journée.
Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes je
change de jour.

Que se passe-t-il ?

Merci

declare @myDate smalldatetime
set @mydate='26/05/2005'
set @mydateÚteadd(hour,23,@mydate)

set @mydateÚteadd(mi,59,@mydate)
set @mydateÚteadd(s,59,@mydate)

print @myDate





Avatar
jack
Merci,

Donc pour arriver au résultat désiré je dois passer par des convert varchar,
etc, etc ?




"Thierry" wrote in message
news:
Bonjour,

Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
23h59mn30s (J) -> 0h0mn0s (J+1)

--
Thierry


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

> Bonjour,
>
> J'ai du perdre un peu la notion du temps...
>
> Je récupère une date (en VB).
> A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être en
> fin
> de journée.
> Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes je
> change de jour.
>
> Que se passe-t-il ?
>
> Merci
>
> declare @myDate smalldatetime
> set @mydate='26/05/2005'
> set @mydateÚteadd(hour,23,@mydate)
>
> set @mydateÚteadd(mi,59,@mydate)
> set @mydateÚteadd(s,59,@mydate)
>
> print @myDate
>
>
>




Avatar
Thierry
Que désires tu comme résultat ?

--
Thierry


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

Merci,

Donc pour arriver au résultat désiré je dois passer par des convert
varchar,
etc, etc ?




"Thierry" wrote in message
news:
Bonjour,

Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
23h59mn30s (J) -> 0h0mn0s (J+1)

--
Thierry


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

> Bonjour,
>
> J'ai du perdre un peu la notion du temps...
>
> Je récupère une date (en VB).
> A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être en
> fin
> de journée.
> Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes je
> change de jour.
>
> Que se passe-t-il ?
>
> Merci
>
> declare @myDate smalldatetime
> set @mydate='26/05/2005'
> set @mydateÚteadd(hour,23,@mydate)
>
> set @mydateÚteadd(mi,59,@mydate)
> set @mydateÚteadd(s,59,@mydate)
>
> print @myDate
>
>
>








Avatar
jack
26/05/2005 23:59:59


"Thierry" wrote in message
news:uG%
Que désires tu comme résultat ?

--
Thierry


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

> Merci,
>
> Donc pour arriver au résultat désiré je dois passer par des convert
> varchar,
> etc, etc ?
>
>
>
>
> "Thierry" wrote in message
> news:
>> Bonjour,
>>
>> Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
>> 23h59mn30s (J) -> 0h0mn0s (J+1)
>>
>> --
>> Thierry
>>
>>
>> "jack" a écrit dans le message de news:
>>
>> > Bonjour,
>> >
>> > J'ai du perdre un peu la notion du temps...
>> >
>> > Je récupère une date (en VB).
>> > A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être


en
>> > fin
>> > de journée.
>> > Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes


je
>> > change de jour.
>> >
>> > Que se passe-t-il ?
>> >
>> > Merci
>> >
>> > declare @myDate smalldatetime
>> > set @mydate='26/05/2005'
>> > set @mydateÚteadd(hour,23,@mydate)
>> >
>> > set @mydateÚteadd(mi,59,@mydate)
>> > set @mydateÚteadd(s,59,@mydate)
>> >
>> > print @myDate
>> >
>> >
>> >
>>
>>
>
>




Avatar
Laurent MOREAU
Ce n'est pas tres clair dans le message de Thierry car il s'est melangé les
pinceaux.

SmallDateTime a une precision de l'ordre de la minute,
DateTime s'est 3 millisecondes

Donc avec SmallDatetime, tu veux ajouter 23h59
soit : 24 x 60 - 1 = 1439 min

Avec Datetime, Tu veux ajouter 23h59mn59s
soit : 24 x 60 x 60 - 1 = 86399 s

-- smalldatetime
declare @mySmallDate smalldatetime
set @mySmallDate ='26/05/2005'
set @mySmallDate Úteadd(min,1439,@mySmallDate )
print @mySmallDate

-- datetime
declare @myDate datetime
set @myDate ='26/05/2005'
set @myDate Úteadd(s,86399,@mySmallDate )
print @myDate



Laurent.





"jack" wrote in message
news:
Merci,

Donc pour arriver au résultat désiré je dois passer par des convert


varchar,
etc, etc ?




"Thierry" wrote in message
news:
> Bonjour,
>
> Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
> 23h59mn30s (J) -> 0h0mn0s (J+1)
>
> --
> Thierry
>
>
> "jack" a écrit dans le message de news:
>
> > Bonjour,
> >
> > J'ai du perdre un peu la notion du temps...
> >
> > Je récupère une date (en VB).
> > A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être


en
> > fin
> > de journée.
> > Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes


je
> > change de jour.
> >
> > Que se passe-t-il ?
> >
> > Merci
> >
> > declare @myDate smalldatetime
> > set @mydate='26/05/2005'
> > set @mydateÚteadd(hour,23,@mydate)
> >
> > set @mydateÚteadd(mi,59,@mydate)
> > set @mydateÚteadd(s,59,@mydate)
> >
> > print @myDate
> >
> >
> >
>
>




Avatar
Thierry
Désolé, effectivement, je voulais bien parler de SmallDateTime.

--
Thierry


"Laurent MOREAU" <l.moreau(enleverceci)@systonic.fr> a écrit dans le message
de news: d74l1c$e2o$
Ce n'est pas tres clair dans le message de Thierry car il s'est melangé
les
pinceaux.

SmallDateTime a une precision de l'ordre de la minute,
DateTime s'est 3 millisecondes

Donc avec SmallDatetime, tu veux ajouter 23h59
soit : 24 x 60 - 1 = 1439 min

Avec Datetime, Tu veux ajouter 23h59mn59s
soit : 24 x 60 x 60 - 1 = 86399 s

-- smalldatetime
declare @mySmallDate smalldatetime
set @mySmallDate ='26/05/2005'
set @mySmallDate Úteadd(min,1439,@mySmallDate )
print @mySmallDate

-- datetime
declare @myDate datetime
set @myDate ='26/05/2005'
set @myDate Úteadd(s,86399,@mySmallDate )
print @myDate



Laurent.





"jack" wrote in message
news:
Merci,

Donc pour arriver au résultat désiré je dois passer par des convert


varchar,
etc, etc ?




"Thierry" wrote in message
news:
> Bonjour,
>
> Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
> 23h59mn30s (J) -> 0h0mn0s (J+1)
>
> --
> Thierry
>
>
> "jack" a écrit dans le message de news:
>
> > Bonjour,
> >
> > J'ai du perdre un peu la notion du temps...
> >
> > Je récupère une date (en VB).
> > A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être


en
> > fin
> > de journée.
> > Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes


je
> > change de jour.
> >
> > Que se passe-t-il ?
> >
> > Merci
> >
> > declare @myDate smalldatetime
> > set @mydate='26/05/2005'
> > set @mydateÚteadd(hour,23,@mydate)
> >
> > set @mydateÚteadd(mi,59,@mydate)
> > set @mydateÚteadd(s,59,@mydate)
> >
> > print @myDate
> >
> >
> >
>
>








Avatar
Thierry
Il faut donc utiliser datetime au lieu de smalldatetime.

Sinon, 26/05/2005 23:59 me semble suffisant.

--
Thierry


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

26/05/2005 23:59:59


"Thierry" wrote in message
news:uG%
Que désires tu comme résultat ?

--
Thierry


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

> Merci,
>
> Donc pour arriver au résultat désiré je dois passer par des convert
> varchar,
> etc, etc ?
>
>
>
>
> "Thierry" wrote in message
> news:
>> Bonjour,
>>
>> Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi
>> :
>> 23h59mn30s (J) -> 0h0mn0s (J+1)
>>
>> --
>> Thierry
>>
>>
>> "jack" a écrit dans le message de news:
>>
>> > Bonjour,
>> >
>> > J'ai du perdre un peu la notion du temps...
>> >
>> > Je récupère une date (en VB).
>> > A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être


en
>> > fin
>> > de journée.
>> > Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes


je
>> > change de jour.
>> >
>> > Que se passe-t-il ?
>> >
>> > Merci
>> >
>> > declare @myDate smalldatetime
>> > set @mydate='26/05/2005'
>> > set @mydateÚteadd(hour,23,@mydate)
>> >
>> > set @mydateÚteadd(mi,59,@mydate)
>> > set @mydateÚteadd(s,59,@mydate)
>> >
>> > print @myDate
>> >
>> >
>> >
>>
>>
>
>








Avatar
jack
Merci

"Thierry" wrote in message
news:
Il faut donc utiliser datetime au lieu de smalldatetime.

Sinon, 26/05/2005 23:59 me semble suffisant.

--
Thierry


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

> 26/05/2005 23:59:59
>
>
> "Thierry" wrote in message
> news:uG%
>> Que désires tu comme résultat ?
>>
>> --
>> Thierry
>>
>>
>> "jack" a écrit dans le message de news:
>>
>> > Merci,
>> >
>> > Donc pour arriver au résultat désiré je dois passer par des convert
>> > varchar,
>> > etc, etc ?
>> >
>> >
>> >
>> >
>> > "Thierry" wrote in message
>> > news:
>> >> Bonjour,
>> >>
>> >> Datatime n'a qu'une précision de l'ordre de la minute, il y a


arrondi
>> >> :
>> >> 23h59mn30s (J) -> 0h0mn0s (J+1)
>> >>
>> >> --
>> >> Thierry
>> >>
>> >>
>> >> "jack" a écrit dans le message de news:
>> >>
>> >> > Bonjour,
>> >> >
>> >> > J'ai du perdre un peu la notion du temps...
>> >> >
>> >> > Je récupère une date (en VB).
>> >> > A laquelle je souhaite "ajouter" 23h59mn59s pour être certain


d'être
> en
>> >> > fin
>> >> > de journée.
>> >> > Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59


minutes
> je
>> >> > change de jour.
>> >> >
>> >> > Que se passe-t-il ?
>> >> >
>> >> > Merci
>> >> >
>> >> > declare @myDate smalldatetime
>> >> > set @mydate='26/05/2005'
>> >> > set @mydateÚteadd(hour,23,@mydate)
>> >> >
>> >> > set @mydateÚteadd(mi,59,@mydate)
>> >> > set @mydateÚteadd(s,59,@mydate)
>> >> >
>> >> > print @myDate
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >
>> >
>>
>>
>
>




Avatar
Fred BROUARD
Quelle est la raison de cet ajout ?
Borne entre deux valeurs ?
Avoir une plage représentant toute la journée ??

A +

jack a écrit:
26/05/2005 23:59:59


"Thierry" wrote in message
news:uG%

Que désires tu comme résultat ?

--
Thierry


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


Merci,

Donc pour arriver au résultat désiré je dois passer par des convert
varchar,
etc, etc ?




"Thierry" wrote in message
news:

Bonjour,

Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi :
23h59mn30s (J) -> 0h0mn0s (J+1)

--
Thierry


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


Bonjour,

J'ai du perdre un peu la notion du temps...

Je récupère une date (en VB).
A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être









en

fin
de journée.
Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes









je

change de jour.

Que se passe-t-il ?

Merci

declare @myDate smalldatetime
set @mydate='26/05/2005'
set @mydateÚteadd(hour,23,@mydate)

set @mydateÚteadd(mi,59,@mydate)
set @mydateÚteadd(s,59,@mydate)

print @myDate




















--
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
jack
Une histoire de taux de change et des requêtes qui, en cas de mouvement le
dernier jour du mois ne renvoient pas les bonnes valeurs.

"Fred BROUARD" wrote in message
news:
Quelle est la raison de cet ajout ?
Borne entre deux valeurs ?
Avoir une plage représentant toute la journée ??

A +

jack a écrit:
> 26/05/2005 23:59:59
>
>
> "Thierry" wrote in message
> news:uG%
>
>>Que désires tu comme résultat ?
>>
>>--
>>Thierry
>>
>>
>>"jack" a écrit dans le message de news:
>>
>>
>>>Merci,
>>>
>>>Donc pour arriver au résultat désiré je dois passer par des convert
>>>varchar,
>>>etc, etc ?
>>>
>>>
>>>
>>>
>>>"Thierry" wrote in message
>>>news:
>>>
>>>>Bonjour,
>>>>
>>>>Datatime n'a qu'une précision de l'ordre de la minute, il y a arrondi


:
>>>>23h59mn30s (J) -> 0h0mn0s (J+1)
>>>>
>>>>--
>>>>Thierry
>>>>
>>>>
>>>>"jack" a écrit dans le message de news:
>>>>
>>>>
>>>>>Bonjour,
>>>>>
>>>>>J'ai du perdre un peu la notion du temps...
>>>>>
>>>>>Je récupère une date (en VB).
>>>>>A laquelle je souhaite "ajouter" 23h59mn59s pour être certain d'être
>
> en
>
>>>>>fin
>>>>>de journée.
>>>>>Or lorsque j'ajoute 30 secondes ou plus après mes 23h et 59 minutes
>
> je
>
>>>>>change de jour.
>>>>>
>>>>>Que se passe-t-il ?
>>>>>
>>>>>Merci
>>>>>
>>>>>declare @myDate smalldatetime
>>>>>set @mydate='26/05/2005'
>>>>>set @mydateÚteadd(hour,23,@mydate)
>>>>>
>>>>>set @mydateÚteadd(mi,59,@mydate)
>>>>>set @mydateÚteadd(s,59,@mydate)
>>>>>
>>>>>print @myDate
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>
>

--
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 *************************



1 2