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 :
Je suppose que je vais devoir utiliser la fonction CONVERT(), mais je ne sais pas la former correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT CAST(GETDATE() AS DATE)
J'ai tenté cette version :
Mais le serveur n'est pas d'accord :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT CONVERT(DATETIME, CONCAT(CAST(GETDATE() AS DATE), '16:00:00'))
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.
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 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 :
Et ça me renvoie la date du jour à 15:59:59:940 (ça devrait aller pour 60ms ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT cast(floor (cast ( getdate() as float )) + 16.00/24 as datetime )
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 )
Partager