Estoy escribiendo este código. Aquí se ingresa dt a la función, así como a someint. La columna Exp es una columna de fecha T-SQL, que viene como un DateTime a través de Linq.Cómo agregar el día a la fecha en Linq a SQL
return (from a in dataContext.TableOfA
where a.name == "Test" &&
a.Exp.Value.AddDays(Convert.ToDouble(Someint)) >= new DateTimeOffset(dt)
select a).First();
En C#, puede agregar un doble como un día a una fecha y hora. Lo que significa que puede agregar 1.5 días. En T-SQL solo puede agregar 1 día, luego 12 horas. Debe agregar un int para cada parte. Entonces, cuando Linq traduce AddDays a T-SQL, convierte mi número de días en milisegundos y los agrega. Esto le permite dar toda la precisión que el doble le da a C#.
Aquí está el problema. Cuando esto llega a SQL, obtengo el error:
The datepart millisecond is not supported by date function dateadd for data type date
Básicamente no puede agregar milisegundos a una fecha. Bueno, no es broma. ¿Pero cómo obtengo algo que se traduce aquí? Quiero agregar int días a una fecha. ¿Es el único querer hacer esto para agregar el negativo de ellos al otro tipo con el que estoy comparando? ¿Qué pasaría si quisiera comparar con columnas mientras agrego a una?
Actualización 1
Keith wrote, A command like datepart(millisecond, 10000, myDate) has been supported in T-SQL since at least SQL Server 2000. This error suggests that whatever database you are using does not support the millisecond date part, which seems strange to me.
Tenga en cuenta que estoy usando SQL Server 2008. No se admite el tipo de datos DATE. Es compatible con fecha y hora.
Un comando como datepart (milisegundo, 10000, myDate) ha sido soportado en T-SQL desde al menos SQL Server 2000. Este error sugiere que cualquier base de datos que esté utilizando no admite la parte de la fecha milisegundo, lo que me parece extraño . – Keith
No es compatible con el tipo de datos DATE. Es compatible con fecha y hora. –
Eso tiene más sentido. Bien, si tiene control sobre el diseño de la BD, la solución simple sería cambiar esta columna de FECHA a FECHA. Obviamente, si estás haciendo esta pregunta, ¿no tienes control sobre esto? – Keith