[SQL Server] Modifier/forcer l'heure d'un DATETIME

cs_Sieurcoug Messages postés 10 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 16 avril 2012 - 21 avril 2009 à 17:44
cs_Sieurcoug Messages postés 10 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 16 avril 2012 - 15 mai 2009 à 17:43
Bonjour,
Dans une fonction, j'ai besoin de forcer l'heure d'un DATETIME.
Par exemple si l'heure de création est inférieure à 8h00, il faut retenir 8h00 comme base de calcul.
Il faudrait reprendre le jour de la variable de @DateCreaet associer 08:00:00 à la place de l'heure d'origine
CREATE FUNCTION FN_DATEDIFF_SELON_HORAIRES (@DateCrea DATETIME, @DateEncours DATETIME)
RETURNS INT AS
BEGIN
DECLARE @DateCreCalcul DATETIME
        If CAST(CONVERT(varchar(8), @DateCrea, 108) as datetime ) < '08:00:00.000'
@DateCreCalcul = ?

Savez-vous comment faire ?
Merci pour votre aide.
A voir également:

2 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
22 avril 2009 à 13:03
Bonjour

il ne faut pas caster ta date en varchar, sinon la comparaison va se faire sur les caracteres, et non sur l'heure en tant que telle.

pour ta fonction, je verrai quelque chose comme ca
IF DATEPART(hour, @DateCrea) < 8
BEGIN
    @DateCreCalcul = DATEADD(hour, - DATEPART(hour, @DateCre) + 8, @DateCre)
    @DateCreCalcul = DATEADD(minute, - DATEPART(minute, @DateCreCalcul), @DateCreCalcul)
    @DateCreCalcul = DATEADD(second, - DATEPART(second, @DateCreCalcul), @DateCreCalcul)
    @DateCreCalcul = DATEADD(millisecond, - DATEPART(millisecond, @DateCreCalcul), @DateCreCalcul)
END
ELSE
BEGIN
    @DateCreCalcul = @DateCre
END
0
cs_Sieurcoug Messages postés 10 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 16 avril 2012
15 mai 2009 à 17:43
Merci beaucoup pour votre aide.
Grâce à votre réponse j'ai pu progresser dans mon développement que je partage en retour içi :
http://www.sqlfr.com/codes/CALCUL-DIFFERENCE-DATE-FONCTION-JOURS-FERIES-TRAVAILLES-PLAGE_50022.aspx
0
Rejoignez-nous