Bonjour,

La fatigue aidant, ma réflexion ralentit gravement et j'espère un peu d'aide

Contexte : pour générer un rapport, je souhaite mettre la date du jour (de génération du rapport, qui sera donc variable) mais en fixant l'heure à 16h.
Le SGBD étant SQL Server, je peux utiliser des commandes SQL Server ou Globales, mais ça élimine MySQL, PostGreSQL ou autres.

J'ai bien la première partie : récupérer la date courante au format date et non Datetime :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT CAST(GETDATE() AS DATE)
Je suppose que je vais devoir utiliser la fonction CONVERT(), mais je ne sais pas la former correctement.

J'ai tenté cette version :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT CONVERT(DATETIME, CONCAT(CAST(GETDATE() AS DATE), '16:00:00'))
Mais le serveur n'est pas d'accord :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Msg*241, Niveau*16, État*1, Ligne*1
Conversion failed when converting date and/or time from character string.
Je pars du principe que le rapport pourra être généré quasiment à n'importe quelle heure du jour comme de la nuit (on peut programmer avec des valeurs par défaut pour avoir un envoi automatique), donc je ne peux pas par exemple utiliser Dateadd pour ajouter X heures à la date du jour, X serait trop variable.

Je suis pourtant quasiment certain que la solution est presque sous mes yeux, mais je n'ai pas les bonnes lunettes

Merci

Edit : honte à moi, je n'ai pas assez bien utilisé la fonction recherche : https://www.developpez.net/forums/d1...ui-heure-fixe/

Ce qui pour mon cas donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT cast(floor (cast ( getdate() as float )) + 16.00/24 as datetime )
Et ça me renvoie la date du jour à 15:59:59:940 (ça devrait aller pour 60ms ).

Je vais passer le sujet en résolu, si ça peut aider quelqu'un qui n'a pas les yeux en face des trous (désolé pour le doublon )