Dapper - Passer getdate en paramètre

dapper

Question

J'utilise SQL Dapper et je veux passer le paramètre comme DATEADD (yy, DATEDIFF (aa, 0, getdate ()) + 1, -1) de l'interface utilisateur. Comment puis-je faire ceci?

DynamicParameter prend la clé en tant que chaîne et la valeur en tant qu'objet et je passe la clé en tant que paramètre spécifié dans la requête et la valeur en tant qu'expression que je reçois de l'interface utilisateur et voici l'erreur obtenue en convertissant la date et / ou l'heure à partir de la chaîne de caractères.

--Besoin d'aide pour.

Réponse d'expert

Il n'est pas tout à fait clair pour moi quel bit vous voulez envoyer en paramètre, car:

 DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1)

n'est pas un paramètre. En fin de compte, vous pouvez le faire directement dans le SQL, bien que vous souhaitiez le lancer dans une variable:

declare @when datetime = DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1);
-- some more sql here, at some point using @when

Si vous souhaitez transmettre uniquement une date en tant que paramètre, effectuez d'abord le code de date:

DateTime when = // some C# here...
var data = conn.Query<Whatever>(sql, new { when, ... }).ToList();

Il n'est jamais possible de passer directement une instruction complexe (telle que DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) ) en tant que paramètre typé unique. En usage normal, un paramètre de type datetime ( datetime ) se voit attribuer une valeur unique, généralement à partir d'un DateTime calculé.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi