Dapper - pasar getdate como parámetro

dapper

Pregunta

Estoy usando SQL Dapper y quiero pasar parámetros como DATEADD (yy, DATEDIFF (aa, 0, getdate ()) + 1, -1) desde la IU. ¿Cómo puedo hacer esto?

DynamicParameter toma la clave como cadena y valor como objeto y estoy pasando la clave como el parámetro que especifiqué en la consulta y el valor como la expresión que recibo de ui y aquí está el error. Lo que obtengo Error de conversión al convertir la fecha y / o la hora de cadena de caracteres.

--Necesitas ayuda.

Respuesta experta

No está del todo claro para mí qué bit desea enviar como parámetro, ya que:

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

no es un parámetro En última instancia, podría hornear eso directamente en el SQL, aunque es posible que desee golpearlo en una variable:

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

Si desea pasar solo una fecha como parámetro, primero realice el código de fecha:

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

Nunca es posible pasar directamente en una declaración compleja (como DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1) ) como un único parámetro escrito. En el uso normal, a un parámetro de tipo (por ejemplo) datetime se le asigna un único valor, generalmente a partir de un DateTime calculado.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué