SQLServer : Problème de datetime - SQL/NoSQL - Programmation
Marsh Posté le 12-06-2006 à 11:22:54
formate d'abord ta date au bon format format(date; "jj/mm/aaaa" ) ... ( jcrois que c ca la syntaxe lol )
Marsh Posté le 12-06-2006 à 11:30:24
En fait, je pense qu'elle est bien formatée. C'est surement un problème à cause du varchar mais je ne trouve pas d'autres moyens pour utiliser une variable dans un order by donc je suis obligé de l'utiliser.
J'ai tester avec une requête simple mais cela ne fonctionne pas.
DECLARE @Str varchar(1000)
DECLARE @d datetime
set @d ='18/02/2005'
Select @Str ='SELECT * FROM matable WHERE date> '+@d
exec (@Str)
GO
par contre sans utiliser de varchar cela fonctionne
DECLARE @d datetime
set @d ='18/02/2005'
SELECT * FROM matable WHERE date> @d
GO
Marsh Posté le 13-06-2006 à 15:31:59
oggo a écrit : Bonjour, j'ai une procédure stockée dans laquelle je passe un parametre date de type DATETIME. CREATE PROCEDURE recherche @date datetime, @orderBy varchar(20) AS |
Ce n'est pas très joli, mais bon.... ça marche
CREATE PROCEDURE recherche @date varchar(10), @orderBy varchar(20) AS
DECLARE @tri varchar(50)
DECLARE @Str varchar(1000)
set @tri = ' ORDER BY '+@orderBy
Select @Str ='SELECT * FROM matable WHERE date > cast(''' + @date + ''' as smalldatetime)' + @tri
exec (@Str)
GO
Attention à bien respecter les apostrophes
Marsh Posté le 13-06-2006 à 15:37:56
Lorsque tu as fait le convert(), tu as pensé à ajouter les guillemets ?
Genre :
CREATE PROCEDURE recherche @date datetime, @orderBy varchar(20) AS |
Marsh Posté le 14-06-2006 à 09:28:03
chapi a écrit : Ce n'est pas très joli, mais bon.... ça marche |
Merci cela marche très bien et ca m'évite d'avoir une procédure stockée beaucoup plus longue...
Marsh Posté le 14-06-2006 à 09:32:44
Elmoricq a écrit : Lorsque tu as fait le convert(), tu as pensé à ajouter les guillemets ?
|
J'avais déja essayé avec les guillemets et j'obtiens nom de colonne incorrect '01/01/2004' par ex alors que mes dates sont bien en datetime, pr info j'ai fais un convert(varchar(10),@date,103)...Mais merci quand même.
Marsh Posté le 12-06-2006 à 10:56:25
Bonjour, j'ai une procédure stockée dans laquelle je passe un parametre date de type DATETIME.
Je dois utiliser un varchar pour ma requête car j'ai un parametre orderBy et SQLServer n'accepte pas des variables dans un order by..Mais cela me pose probleme lorsque je veux également utiliser le paramètre date.
-> Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaine de caracteres
Je précise que cela fonctionne tb lorsque je n'utilise pas le paramètre orderBy et donc en utilisant une requête sans passer par le varchar. J'ai également utiliser cast, convert, etc je suis à cours d'idée malheureusement.
Auriez vous une solution? merci d'avance
CREATE PROCEDURE recherche @date datetime, @orderBy varchar(20) AS
DECLARE @tri varchar(50)
DECLARE @Str varchar(1000)
set @tri = ' ORDER BY '+@orderBy
Select @Str ='SELECT * FROM matable WHERE date > '+@date + @tri
exec (@Str)
GO
Message édité par oggo le 12-06-2006 à 11:09:58