declare @orderwhere varchar(5000)
declare @Pdate DateTime
set @orderwhere = 'Product.ProductID = 1 And Product.ProductDate=' + @Pdate
exec('select Product.ProductID
from Product
where ' + @orderwhere)
I get these errors:
Msg 241, Level 16, State 1, Line 4
Conversion failed when converting date and/or time from character string.
3 Réponses :
EDIT: P>
Remarque: cette réponse fait référence à la question originale qui avait une ligne du manuel pour Gamme de date [:] 1er janvier 1753 au 31 décembre 9999 P>
blockQuote>
Votre année est définitivement trop tôt pour un Vous pouvez essayer d'utiliser un Declare @pdate DateTime = '1001-01-01' code> et le message d'erreur "Échec de la conversion lors de la conversion de la date et / ou du temps de chaîne de caractères." en elle. p>
datetime code> : p>
DateTime code>. p>
DateTime2 code> , qui va du 0001-01-01 à 9999-12-31 ou juste un DATE CODE> a> avec la même plage que DateTime2 code> (concernant la partie Date, pas la partie temporelle du cours). P>
Ils ont édité la question avec une erreur différente, pensait que ses réponses l'erreur postée originale.
Vous devez convertir le @pdate code> en varchar pour la concaténation de la chaîne. declare @orderwhere varchar(5000)
declare @Pdate datetime = '20160101'
set @orderwhere = 'Product.ProductID = 1 And Product.ProductDate= ''' + convert(varchar,@Pdate,120) + ''''
print('select Product.ProductID
from Product
where ' + @orderwhere)
Vous devez convertir votre @pdate en varchar et ajouter des guillemets.
Essayez de tester vos requêtes dynamiques en imprimant vos résultats. P> p>
Scsimon, le correctif devrait fonctionner. La réponse crée une nouvelle variable (@pdatec) et convertissant la date à un Varchar.
Ne modifiez pas la question de manière à ce que les réponses déjà données ont été stupides. Si vous avez résolu un problème et que vous en avez un autre poser plutôt de poser une nouvelle question et de supprimer probablement l'ancien.
D'accord avec @stickybit ici. La modification est complètement différente de la question initiale et peut provoquer des bowvotes inutiles.